动态改变TabActivity标签的tab图片的两种方法浅析

本文介绍了两种在TabActivity中动态改变标签图标的方法:一种是通过OnTabChangeListener监听并手动更新图标;另一种是在XML文件中配置不同的状态来实现图标变化。前者适合更复杂的布局需求,后者则更为简便。
摘要由CSDN通过智能技术生成

     前提:

 

     关于TabActivity的介绍,已经很多了,对于动态改变TabActivity标签的图片的介绍也有很多,但是大部分都是去监听tabchange事件,代码量大,一不小心就会把图片写错位置,需要很细心才行。我在做Contacts通讯录得时候,不小心发现了天机,只需要在XML文件里配置下即可,工作量也少了很多。下面就把这两种方法再详细的介绍给大家。这两种方法各有各的好处,还要根据情况大家自己选择。

 

第一种:OnTabChangeListener监听tab改变

     网上介绍的很多,原理就是获得TabActivity的TabHost的TabWidget,然后改变TabWidget的布局中的android.R.id.icon的ImageView的图片资源!下面把示例代码贴出来,大家看下就明白了。

 

        一个TabWidget可以add多个tab,mTabHost.getTabWidget().getChildAt(int index).index是从0开始,从左到右依次+1。

我定义了两个hashmap去存储各个tab对应的选中和未选中时的现实的图片的id。变量last对应上一个显示的tab的tabid(Tabhost.newTabSpec(String tabid),在onTabChanged(String tabid)只会将tabid传过来),我new的时候将tabid对应成index的对应的字符串,在处理的时候方便。具体看onTabChanged方法。

 

   这种方法虽然复杂,但是可以满足更复杂的需求,比如去更改tab的显示布局,都是可以的,如果只是区分当前的tab与其他tab,还是看第二种方法更简单易懂。

 

 

 

第二种:配置XML

 

       只需要在drawable文件夹下面定义一个name.xml,具体内容如下。定义selector 标签,大家自己看标签属性名字就知道各个属性代表的意思了吧,什么都不填默认是unselected状态。java代码只需要setIndicator(getText(R.string.text),getResources().getDrawable(R.drawable.name))。

        这种方法简单,但是不能去改变tab的布局,满足一般的区分当前显示的tab与其他tab还是可以的。

 

 

java代码:

 

 

 

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值