30. * 初始化底部按钮 31. */
32. private void initRadios() {
33. ((RadioButton) findViewById(R.id.radio_button0)).setOnCheckedChange
Listener(this);
34. ((RadioButton) findViewById(R.id.radio_button1)).setOnCheckedChange
Listener(this);
35. ((RadioButton) findViewById(R.id.radio_button2)).setOnCheckedChange
Listener(this);
36. ((RadioButton) findViewById(R.id.radio_button3)).setOnCheckedChange
Listener(this);
37. ((RadioButton) findViewById(R.id.radio_button4)).setOnCheckedChange
Listener(this); 38. } 39. 40. /** 41. * 切换模块 42. */ 43. @Override
44. public void onCheckedChanged(CompoundButton buttonView, boolean isC
hecked) {
45. if (isChecked) {
46. switch (buttonView.getId()) { 47. case R.id.radio_button0:
48. this.mHost.setCurrentTabByTag(\49. break;
50. case R.id.radio_button1:
51. this.mHost.setCurrentTabByTag(\52. break;
53. case R.id.radio_button2:
54. this.mHost.setCurrentTabByTag(\55. break;
56. case R.id.radio_button3:
57. this.mHost.setCurrentTabByTag(\58. break;
59. case R.id.radio_button4:
60. this.mHost.setCurrentTabByTag(\61. break; 62. } 63. } 64. } 65.
66. private void setupIntent() { 67. this.mHost = getTabHost();
68. TabHost localTabHost = this.mHost; 69.
70. localTabHost.addTab(buildTabSpec(\71. R.drawable.icon_1_n, this.mMBlogIntent)); 72.
73. localTabHost.addTab(buildTabSpec(\
,
74. R.drawable.icon_2_n, this.mInfoIntent)); 75.
76. localTabHost.addTab(buildTabSpec(\
o,
77. R.drawable.icon_3_n, this.mUserInfoIntent)); 78.
79. localTabHost.addTab(buildTabSpec(\
,
80. R.drawable.icon_4_n, this.mSearchIntent)); 81.
82. localTabHost.addTab(buildTabSpec(\83. R.drawable.icon_5_n, this.mMoreIntent)); 84. 85. } 86.
87. private TabHost.TabSpec buildTabSpec(String tag, int resLabel, int resIcon,
88. final Intent content) { 89. return this.mHost
90. .newTabSpec(tag)
91. .setIndicator(getString(resLabel),
92. getResources().getDrawable(resIcon)) 93. .setContent(content); 94. }
代码说明
1. 由于TabWidget被隐藏,所以相关的事件也会无效,这里取巧用RadioGroup与RadioButton的特性来处理切换,然后监听事件调用setCurrentTabByTag来切换Activity。
2. 注意即使TabWidget被隐藏,也要为其设置indicator,否则会保持。
三、总结
在这之前如果要做这种效果我恐怕第一时间就会想到用ActivityGroup来做,主要是因为TabHost的TabWidget非常难看,用起来也不方便。其实从源码可以看出,TabActivity也是继承自ActivityGroup,这里结合了单选按钮和TabHost,各取其长,有时间可以专门写一个这样的自定义控件:)
android TabHost 动态修改图标或者动态改变标题
分类: android的小解 2011-07-31 14:33 4083人阅读 评论(2) 收藏 举报
androidlayout数据库encodingstringclass
遇到这个问题的时候,说实话,刚开始也没有想到这个方法。那时客户需要实现在TabHost标题上动态显示从数据库获取的个数。起初这样思考的,从数据库获取个数是非常简单,但是要把获取的个数显示在TabHost标题,思前恋后,想用Handler来异步实现消息传递。最终也没有解决掉。也许也有很多的朋友和我遇到同样棘手的问题吧。 把我解决的方法和大家分享下吧。
如果将图标或者标题的变量设置为全局变量,你们应该知道我的目的吧。也就是为了在这个类不断的进行赋值。
先来简单的认识下TabHost吧。理论我就不多说了,你们看的话也很累,还是直接代码贴出来看看就一目了然了。
xml的文件代码:
xmlns:android=\http://schemas.android.com/apk/res/android\ android:id=\ android:layout_width=\ android:layout_height=\ android:orientation=\ android:layout_width=\ android:layout_height=\ android:id=\ android:layout_width=\ android:layout_height=\ android:id=\ android:layout_width=\ android:layout_height=\ android:id=\ android:layout_width=\ android:layout_height=\ android:text=\ android:id=\ android:layout_width=\ android:layout_height=\ android:text=\ android:id=\ android:layout_width=\ android:layout_height=\ android:text=\
说明一下红色的标注,我们应该不可以改变的吧。
再贴出来Activity类的代码吧。
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库Android TabHost用法(5)在线全文阅读。
相关推荐: