自定义TabHost

来源:互联网 发布:硬盘开盘恢复数据 编辑:程序博客网 时间:2024/05/18 05:56

之前一直认为TabHost不够灵活而使用ActivityGroup。看到了一个利用反射来控制TabHost的例子

先通过

tabHost.newTabSpec(CagConstant.TAB_TAG_CHANGE_INFO);

tabHost.newTabSpec(CagConstant.TAB_TAG_ROUTE_INFO);

tabHost.newTabSpec(CagConstant.TAB_TAG_STATION_INFO);


来获得TabSpec单个按钮的对象,之后setContent(ViewId)来设置选中状态效果。

接下来通过反射

tabWidget.getClass().getDeclaredField("mBottomLeftStrip");

tabWidget.getClass().getDeclaredField(

"mBottomRightStrip");


(2.2之后改为mLeftStrip,mRightStrip)

 

 

得到TabSpec左右两侧按钮的Field对象。然后解除访问限制setAccessible(true);设置未被选中时的背景。

点击事件按钮背景的变化是通过for循环来判断的,个人感觉还有可以改进的地方。

 

 

 

原创粉丝点击