Android编程实现自定义Tab选项卡功能示例
程序员文章站
2023-12-18 17:02:22
本文实例讲述了android编程实现自定义tab选项卡功能。分享给大家供大家参考,具体如下:
import android.app.tabactivity;
i...
本文实例讲述了android编程实现自定义tab选项卡功能。分享给大家供大家参考,具体如下:
import android.app.tabactivity; import android.content.intent; import android.os.bundle; import android.widget.*; import android.widget.tabhost.ontabchangelistener; import android.os.build; import android.view.view; import java.lang.reflect.field; import android.view.layoutinflater; public class testtabactivity extends tabactivity { /** called when the activity is first created. */ @override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); int width =45; int height =48; final tabhost tabs = gettabhost(); final tabwidget tabwidget = tabs.gettabwidget(); field mbottomleftstrip; field mbottomrightstrip; layoutinflater.from(this).inflate(r.layout.tab_views, tabs.gettabcontentview(), true); tabs.addtab(tabs.newtabspec("first tab") .setindicator("信息",getresources().getdrawable(r.drawable.m)) .setcontent(new intent(testtabactivity.this,oneactivty.class)) ); tabs.addtab(tabs.newtabspec("second tab") .setindicator("收藏",getresources().getdrawable(r.drawable.n)) .setcontent(r.id.content)); tabs.addtab(tabs.newtabspec("second tab") .setindicator("设置",getresources().getdrawable(r.drawable.s)) .setcontent(r.id.content)); for (int i =0; i < tabwidget.getchildcount(); i++) { /** * 设置高度、宽度,不过宽度由于设置为fill_parent,在此对它没效果 */ tabwidget.getchildat(i).getlayoutparams().height = height; tabwidget.getchildat(i).getlayoutparams().width = width; /** * 设置tab中标题文字的颜色,不然默认为黑色 */ final textview tv = (textview) tabwidget.getchildat(i).findviewbyid(android.r.id.title); tv.settextcolor(this.getresources().getcolorstatelist(android.r.color.white)); /** * 此方法是为了去掉系统默认的色白的底角 * * 在 tabwidget中mbottomleftstrip、mbottomrightstrip * 都是私有变量,但是我们可以通过反射来获取 * * 由于还不知道android 2.2的接口是怎么样的,现在先加个判断好一些 */ if (float.valueof(build.version.release) <= 2.1) { try { mbottomleftstrip = tabwidget.getclass().getdeclaredfield ("mbottomleftstrip"); mbottomrightstrip = tabwidget.getclass().getdeclaredfield ("mbottomrightstrip"); if(!mbottomleftstrip.isaccessible()) { mbottomleftstrip.setaccessible(true); } if(!mbottomrightstrip.isaccessible()){ mbottomrightstrip.setaccessible(true); } mbottomleftstrip.set(tabwidget, getresources().getdrawable (r.drawable.no)); mbottomrightstrip.set(tabwidget, getresources().getdrawable (r.drawable.no)); } catch (exception e) { e.printstacktrace(); } } else { /** * 不做任何处理 */ } view vvv = tabwidget.getchildat(i); if(tabs.getcurrenttab()==i){ vvv.setbackgrounddrawable(getresources().getdrawable(r.drawable.tab_button)); } else { vvv.setbackgrounddrawable(getresources().getdrawable(r.drawable.bar)); } } /** * 当点击tab选项卡的时候,更改当前的背景 */ tabs.setontabchangedlistener(new ontabchangelistener(){ @override public void ontabchanged(string tabid) { // todo auto-generated method stub for (int i =0; i < tabwidget.getchildcount(); i++) { view vvv = tabwidget.getchildat(i); if(tabs.getcurrenttab()==i){ vvv.setbackgrounddrawable(getresources().getdrawable(r.drawable.tab_button)); } else { vvv.setbackgrounddrawable(getresources().getdrawable(r.drawable.bar)); } } }}); } }
更多关于android相关内容感兴趣的读者可查看本站专题:《android开发入门与进阶教程》、《android编程之activity操作技巧总结》、《android资源操作技巧汇总》、《android文件操作技巧汇总》、《android操作sqlite数据库技巧总结》、《android操作json格式数据技巧总结》、《android数据库操作技巧总结》、《android编程开发之sd卡操作方法汇总》、《android视图view技巧总结》及《android控件用法总结》
希望本文所述对大家android程序设计有所帮助。