您的位置:首页 > 移动开发 > Android开发

Android控件使用—TabHost底部导航

2015-06-12 16:54 429 查看
一个用tabhost做成的底部导航界面,由两部分组成,底部是一个tabwidget,里面放了RadioButton组成的RadioGroup,上面是一个framelayout,把framelayout的高度设置为0dp,比重设为1,就可以实现framelayout铺满剩下的屏幕;Radiobutton里面设置button=“@null”则可去掉选项框,设置drawabletop则可在文字上方设置图片,如果要图片实现点击跟没点击是不同图片的话,要重写一个drawable,然后drawabletop里面的图片资源为重写的drawable,重写的代码如下:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/ico_on_1" android:state_checked="true"/>
<item android:drawable="@drawable/ico_1" android:state_checked="false"/>
<item android:drawable="@color/white"></item>
</selector>


xml写好之后就在java中添加代码,首先将跳转activity定义赋值,

this.AIntent = new Intent(this, OneActivity.class);
this.BIntent = new Intent(this, TwoActivity.class);
this.CIntent = new Intent(this, ThreeActivity.class);
this.DIntent = new Intent(this, FourActivity.class);


然后对radiobutton点击进行监听,根据ID判断,设置不同的Tag,Radiobutton的监听事件函数为onCheckedChanged();

public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
switch (buttonView.getId()) {
case R.id.radio_button0:
this.mTabHost.setCurrentTabByTag("0");
break;
case R.id.radio_button1:
this.mTabHost.setCurrentTabByTag("1");
break;
case R.id.radio_button2:
this.mTabHost.setCurrentTabByTag("2");
break;
case R.id.radio_button3:
this.mTabHost.setCurrentTabByTag("3");
break;
}
}
});


然后将文字,图片跟跳转activity的事件添加到tab中:

private void setIntent() {
this.mTabHost = getTabHost();
TabHost localtab = this.mTabHost;
localtab.addTab(buildTabSpec("0", R.string.main_home,
R.drawable.ico_1, this.AIntent));
localtab.addTab(buildTabSpec("1", R.string.zb,
R.drawable.ico_2, this.BIntent));
localtab.addTab(buildTabSpec("2", R.string.sm,
R.drawable.ico_3, this.CIntent));
localtab.addTab(buildTabSpec("3", R.string.yh,
R.drawable.ico_4, this.DIntent));
}
private TabHost.TabSpec buildTabSpec(String tag, int resLabel, int resIcon,
final Intent content) {
return this.mTabHost
.newTabSpec(tag)
.setIndicator(getString(resLabel),
getResources().getDrawable(resIcon))
.setContent(content);
}


这样就实现了用tabhost做导航,点击底部切换界面。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: