学习tabhost 实现微博的主界面
2014-05-27 吴文付
微博的主界面还是很漂亮的,我们这里来熟悉下tabhost的使用,
网上资料很多,主要参考了:http://blog.csdn.net/shulianghan/article/details/18233209
写的很好。
我的主要工作就是看了该文章,写了一个演示。演示参考了 小巫微博的代码。
代码如下:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
package cn.wuwenfu.layoutdemo; /* * 2014-05-27 * 主界面的布局Ok * * */ import com.example.layoutdemo.R; import android.app.TabActivity; import android.content.Intent; import android.os.Bundle; import android.widget.RadioButton; import android.widget.RadioGroup; import android.widget.TabHost; import android.widget.RadioGroup.OnCheckedChangeListener; import android.widget.TabHost.TabSpec; /** * TabActivity已经放弃。替代品是Fragment * @author Administrator * */ @SuppressWarnings("deprecation") public class MainActivity extends TabActivity { public static TabHost mTabhost; public static final String TAB_HOME = "TabHome"; public static final String TAB_MSG = "TabMsg"; public static final String TAB_SELF = "TabSelfInfo"; public static final String TAB_DISCOVE = "TabDiscove"; public static final String TAB_MORE = "TabMore"; public static RadioGroup indexGroup; public static RadioButton radio_button0; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); //设置无标题,需要注意位置,在布局文件之前 requestWindowFeature(getWindow().FEATURE_NO_TITLE); setContentView(R.layout.mainactivity); radio_button0 = (RadioButton) this.findViewById(R.id.tabbar_home); radio_button0.setChecked(true); // 设置首页按钮默认是按下状态 // 获取TabHost mTabhost = (TabHost) findViewById(android.R.id.tabhost); // 设定标签、制定一个标签作为选项卡指示符 TabSpec tabSpec1 = mTabhost.newTabSpec(TAB_HOME).setIndicator(TAB_HOME); // 指定一个加载activity的Intent对象作为选项卡内容 tabSpec1.setContent(new Intent(MainActivity.this, Home.class)); mTabhost.addTab(tabSpec1); // 添加第一个子页 TabSpec tabSpec2 = mTabhost.newTabSpec(TAB_MSG).setIndicator(TAB_MSG); tabSpec2.setContent(new Intent(MainActivity.this, Message.class)); mTabhost.addTab(tabSpec2); // 添加第二个子页 TabSpec tabSpec3 = mTabhost.newTabSpec(TAB_SELF).setIndicator(TAB_SELF); tabSpec3.setContent(new Intent(MainActivity.this, SelfInfo.class)); mTabhost.addTab(tabSpec3); // 添加第三个子页 TabSpec tabSpec4 = mTabhost.newTabSpec(TAB_DISCOVE).setIndicator( TAB_DISCOVE); tabSpec4.setContent(new Intent(MainActivity.this, SearchInfo.class)); mTabhost.addTab(tabSpec4); // 添加第四个子页 TabSpec tabSpec5 = mTabhost.newTabSpec(TAB_MORE).setIndicator(TAB_MORE); tabSpec5.setContent(new Intent(MainActivity.this, More.class)); mTabhost.addTab(tabSpec5); // 添加第五个子页 indexGroup = (RadioGroup) this.findViewById(R.id.main_radio); // 实现RadioGroup的子选项点击监听 indexGroup.setOnCheckedChangeListener(new OnCheckedChangeListener() { @Override public void onCheckedChanged(RadioGroup group, int checkedId) { switch (checkedId) { case R.id.tabbar_home: // 首页 System.out.println("点击了首页"); mTabhost.setCurrentTabByTag(TAB_HOME); break; case R.id.tabbar_message:// 信息 mTabhost.setCurrentTabByTag(TAB_MSG); break; case R.id.tabbar_me: // 个人资料 mTabhost.setCurrentTabByTag(TAB_SELF); break; case R.id.tabbar_discove: // 发现 mTabhost.setCurrentTabByTag(TAB_DISCOVE); break; case R.id.tabbar_more: // 更多 mTabhost.setCurrentTabByTag(TAB_MORE); } } }); } }
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
package cn.wuwenfu.layoutdemo; /* * * 简单的模拟首页 * * */ import com.example.layoutdemo.R; import android.app.Activity; import android.os.Bundle; public class Home extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.home); } }
其他的界面都和首页相同,只是更换了内容。
几个注意点:我写的代码里,没有使用tabWidget .因为它太丑陋了。采用的是单选按钮
效果图
:
工程的地址: http://download.csdn.net/detail/douniwan123654/7408051
QQ:540045865
热爱生活,热爱编程。