Android TabHost + RadioButton实现Tab导航栏
来源:互联网 发布:bit.edu.cn域名 编辑:程序博客网 时间:2024/05/21 12:50
最近闲着无事,看了很多的关于项目中的Tab导航栏的实现,最近也好久没更新了,整理了我认为比较好的实现方式:TabHost + RadioButton,相信tabHost大家都比较熟悉,在这里就不在介绍了,感兴趣的可以自己去看看。
我们来先看布局:
activity_main.xml
<?xml version="1.0" encoding="utf-8"?><TabHost xmlns:android="http://schemas.android.com/apk/res/android" android:id="@android:id/tabhost" android:layout_width="match_parent" android:layout_height="match_parent" > <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <FrameLayout android:id="@android:id/tabcontent" android:layout_width="match_parent" android:layout_height="0.0dip" android:layout_weight="1.0" > </FrameLayout> <TabWidget android:id="@android:id/tabs" android:layout_width="match_parent" android:layout_height="wrap_content" android:visibility="gone" > </TabWidget> <RadioGroup android:id="@+id/radioGroup" android:layout_width="match_parent" android:layout_height="@dimen/title_bottom_height" android:background="@color/background_bottomBar" android:orientation="horizontal" > <RadioButton android:id="@+id/position" android:layout_height="match_parent" android:layout_width="0dp" android:layout_weight="1" android:checked="true" android:drawableTop="@drawable/btn_position" android:button="@null" android:text="职位" android:textColor="@color/btn_text_color" android:textSize="@dimen/sp12" android:gravity="center" android:paddingTop="@dimen/dp5" /> <RadioButton android:id="@+id/training" android:layout_width="0dp" android:layout_weight="1" android:layout_height="match_parent" android:drawableTop="@drawable/btn_training" android:button="@null" android:text="培训" android:textSize="@dimen/sp12" android:textColor="@color/btn_text_color" android:gravity="center" android:paddingTop="@dimen/dp5" /> <RadioButton android:id="@+id/found" android:layout_width="0dp" android:layout_weight="1" android:layout_height="match_parent" android:drawableTop="@drawable/btn_found" android:textColor="@color/btn_text_color" android:text="发现" android:textSize="@dimen/sp12" android:gravity="center" android:paddingTop="@dimen/dp5" android:button="@null" /> <RadioButton android:id="@+id/message" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" android:drawableTop="@drawable/btn_message" android:button="@null" android:text="消息" android:textSize="@dimen/sp12" android:textColor="@color/btn_text_color" android:gravity="center" android:paddingTop="@dimen/dp5" /> <RadioButton android:id="@+id/my" android:layout_width="0dp" android:layout_weight="1" android:layout_height="match_parent" android:drawableTop="@drawable/btn_my" android:text="我的" android:textSize="@dimen/sp12" android:textColor="@color/btn_text_color" android:gravity="center" android:paddingTop="@dimen/dp5" android:button="@null" /> </RadioGroup> </LinearLayout></TabHost>
布局很简单,最外层tabHost,里面是radioGroup包裹的radioButton,在这里就不一一赘述了。
下面我们来看代码:
MainActivity.class:
public class MainActivity extends TabActivity { private static final String TAG = MainActivity.class.getName(); private RadioGroup radioGroup; private TabHost tabHost; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); radioGroup = (RadioGroup) findViewById(R.id.radioGroup); tabHost = (TabHost) findViewById(android.R.id.tabhost); initTabs(); } private void initTabs() { tabHost.setFocusable(true); tabHost.setCurrentTab(0); TabHost.TabSpec tabSpec = tabHost.newTabSpec("0"); Intent intent = new Intent(this, PositionActivity.class); tabSpec.setIndicator("position").setContent(intent); tabHost.setup(this.getLocalActivityManager()); tabHost.addTab(tabSpec); TabHost.TabSpec tabSpec2 = tabHost.newTabSpec("1"); Intent intent2 = new Intent(this, TrainingActivity.class); tabSpec2.setIndicator("training").setContent(intent2); tabHost.addTab(tabSpec2); TabHost.TabSpec tabSpec3 = tabHost.newTabSpec("2"); Intent intent3 = new Intent(this, FoundActivity.class); tabSpec3.setIndicator("found").setContent(intent3); tabHost.addTab(tabSpec3); TabHost.TabSpec tabSpec4 = tabHost.newTabSpec("3"); Intent intent4 = new Intent(this, MessageActivity.class); tabSpec4.setIndicator("message").setContent(intent4); tabHost.addTab(tabSpec4); TabHost.TabSpec tabSpec5 = tabHost.newTabSpec("4"); Intent intent5 = new Intent(this, MyActivity.class); tabSpec5.setIndicator("my").setContent(intent5); tabHost.addTab(tabSpec5); radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { @Override public void onCheckedChanged(RadioGroup group, int checkedId) { switch (checkedId) { case R.id.position: tabHost.setCurrentTab(0); break; case R.id.training: tabHost.setCurrentTab(1); break; case R.id.found: tabHost.setCurrentTab(2); break; case R.id.message: tabHost.setCurrentTab(3); break; case R.id.my: tabHost.setCurrentTab(4); break; } } }); }大家可以看到这里MainActivity继承的是TabActivity,这里值得注意的是tabHost初始化的时候必须是android.R.id;主要原理是:利用Intent跳转,设置下标,radioGroup的监听事件:setOnCheckedClick,相信大家都能看懂,是不是很简单呢,
当然实现方式很多,谷歌5.0之后推出的tabLayout +ViewPager也是可以实现的,tabHost+Fragment都是可以的
0 0
- Android TabHost + RadioButton实现Tab导航栏
- ViewPager+RadioButton轻松实现底部Tab导航
- RadioButton + selector实现Tab导航效果
- Android导航Tab栏实现
- android RadioGroup+TabHost实现导航栏
- Android小项目之采用TabHost和RadioButton实现底部页面导航
- Android:TabHost实现Tab切换
- Android:TabHost实现Tab切换
- Android:TabHost实现Tab切换
- Android:TabHost实现Tab切换
- Android-TabHost实现Tab切换
- 采用TabHost和RadioButton实现页面导航效果
- Tab导航栏的实现方式之二 :RadioGroup+RadioButton+Fragment
- Android UI之Tab(TabActivity+TabHost实现)
- 【Android】Tab页的实现,利用tabhost
- android selector RadioButton实现Tab功能
- android selector RadioButton实现Tab功能
- android RadioButton利用selector 实现Tab功能
- GeekBandboolanC++ 笔记第二周
- raport-1
- 【Android】:跳转系统界面汇总
- Hadoop新手学习指导
- matlab java jtattoo UI
- Android TabHost + RadioButton实现Tab导航栏
- iOS开发 AFN配置https请求
- CodeVS1085 数字游戏
- CentOS6设置静态IP而且还可以上网
- 输出奖金总数
- HDOJ 5920 Ugly Problem(构造+大数相减)
- ActiveMQ 无法启动 提示端口被占用 解决方案
- html之手打各种符号,如:★ ● 等等
- POI3.8 导出大数据excel