成都网站建设设计

将想法与焦点和您一起共享

TabHost实现点击事件-创新互联

在一般的情况下,我们只需要在Tab栏中实现两种状态的切换,这时候运用selector就可以简单的实现了。

巴里坤哈萨克ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为成都创新互联公司的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:028-86922220(备注:SSL证书合作)期待与您的合作!

而如果是三种状态之间的切换呢,具体效果如图所示

TabHost实现点击事件(注:实现的是使用FragmenTabHost)

效果是不选中时显示最左边状态,选中第一次时显示中间状态,再一次点击过后显示右侧状态。

在找到正确的做法之前,我试过了TabHost的所有监听器,均以失败告终。

其后,我们知道每一个tab标签都是一个布局,所以我在把这个布局添加到tab中时设置点击事件,这样做又是否可行呢,答案依旧是否定的,与TabHost的点击事件一样,他们都会被我们实现的onTabChangedListener抢占了。

最后才在同学的帮助下找到了一个能实现此效果的方法:

mTabHost.getTabWidget().getChildAt(1).setOnClickListener()

利用mTabHost.getTabWidget().getChildAt(1)方法找到的是tab标签位置为1的那个布局,设置它的点击事件,在点击事件中找到布局之中的图片,去设置即可。

照理说此时应该完美无瑕了,可是运行出来后,发现这是tab为1的这个位置会有点击事件(当然了,设置图片这个是看不出来的,发个Toast还是能出来的),但是点击它选中的效果没有了。

这是因为此时这个tab标签的位置只去响应了我们的点击事件,而不会响应TabChangeLinstener的事件了。

此时需要在监听事件的代码中加入一句话,设置当前选中的tab标签

mTabHost.setCurrentTab(1);

这样就真的能做到完美无瑕了。

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


本文名称:TabHost实现点击事件-创新互联
文章源于:http://chengdu.cdxwcx.cn/article/ccjioj.html