未验证,看着还不错

原文:http://www.cnblogs.com/sank615/archive/2011/12/20/2286636.html

新浪微博下端导航栏

  效果如图:

布局文件:

<?xml version="1.0" encoding="utf-8"?>

<TabHost xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:id="@android:id/tabhost"

>

<LinearLayout

android:orientation="vertical"

android:layout_width="fill_parent"

android:layout_height="fill_parent">

<FrameLayout

android:id="@android:id/tabcontent"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:layout_weight="1.0"/>

<TabWidget

android:id="@android:id/tabs"

android:visibility="gone"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

/>

<RadioGroup

android:gravity="center_vertical"

android:orientation="horizontal"

android:id="@+id/rgTab"

android:background="@drawable/maintab_toolbar_bg"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

>

<RadioButton

style="@style/main_tab_rb"

android:text="首页"

android:id="@+id/rbHome"

android:drawableTop="@drawable/icon_1_n"/>

<RadioButton

style="@style/main_tab_rb"

android:text="私信"

android:id="@+id/rbSixin"

android:drawableTop="@drawable/icon_2_n"/>

<RadioButton

style="@style/main_tab_rb"

android:text="评论"

android:id="@+id/rbComment"

android:drawableTop="@drawable/icon_3_n"/>

<RadioButton

style="@style/main_tab_rb"

android:text="刷新"

android:id="@+id/rbRefresh"

android:drawableTop="@drawable/icon_4_n"/>

<RadioButton

style="@style/main_tab_rb"

android:text="更多"

android:id="@+id/rbMore"

android:drawableTop="@drawable/icon_5_n"/>

</RadioGroup>

</LinearLayout>

</TabHost>

此处应注意三个组件的id:android:id="@android:id/tabhost",android:id="@android:id/tabcontent",android:id="@android:id/tabs",在这个布局文件中我们将TabWidget的android:visibility="gone" 这样就起到了去掉tabHost默认布局的效果,然后我们在下面添加RadioGroup控件,在RadioGroup的选项改变事件里完成Tab的切换,达到点击radioButton就像点击TabWidget的效果。RadioGroup的选项改变事件代码在下面的MainTabActivity.java中。

styles.xml

<?xml version="1.0" encoding="utf-8"?>

<resources>

<style name="main_tab_rb">

<item name="android:layout_width">fill_parent</item>

<item name="android:layout_height">fill_parent</item>

<item name="android:layout_weight">1.0</item>

<item name="android:background">@drawable/rb_menu_bg</item>

<item name="android:gravity">center_horizontal</item>

<item name="android:button">@null</item>

<item name="android:textColor">#ffffffff</item>

<item name="android:ellipsize">marquee</item>

<item name="android:singleLine">true</item>

<item name="android:textSize">12sp</item>

<item name="android:paddingTop">5dp</item>

<item name="android:layout_marginTop">2dp</item>

</style>

</resources

rb_menu_bg.xml

<?xml version="1.0" encoding="UTF-8"?>

<selector

xmlns:android="http://schemas.android.com/apk/res/android">

<item android:state_focused="true" android:drawable="@drawable/home_btn_bg_s"/>

<item android:state_pressed="true" android:drawable="@drawable/home_btn_bg_s"/>

<item android:state_checked="true" android:drawable="@drawable/home_btn_bg_d"/>

</selector>

MainTabActivity.java

public class MainTabActivity extends TabActivity {

private RadioGroup rgTab;

private TabHost th;

@Override

protected void onCreate(Bundle savedInstanceState) {

// TODO Auto-generated method stub

super.onCreate(savedInstanceState);

this.setContentView(R.layout.main);

rgTab = (RadioGroup) this.findViewById(R.id.rgTab);

th = this.getTabHost();

th.addTab(th.newTabSpec("TS_HOME").setIndicator("TS_HOME").setContent(new Intent(MainTabActivity.this,HomeActivity.class)));

th.addTab(th.newTabSpec("TS_SIXIN").setIndicator("TS_SIXIN").setContent(new Intent(MainTabActivity.this,SixinActivity.class)));

th.addTab(th.newTabSpec("TS_COMMENT").setIndicator("TS_COMMENT").setContent(new Intent(MainTabActivity.this,CommentActivity.class)));

th.addTab(th.newTabSpec("TS_REFRESH").setIndicator("TS_REFRESH").setContent(new Intent(MainTabActivity.this,RefreshActivity.class)));

th.addTab(th.newTabSpec("TS_MORE").setIndicator("TS_MORE").setContent(new Intent(MainTabActivity.this,MoreActivity.class)));

rgTab.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {

@Override

public void onCheckedChanged(RadioGroup group, int checkedId) {

// TODO Auto-generated method stub

switch (checkedId) {

case R.id.rbHome:

th.setCurrentTabByTag("TS_HOME");

break;

case R.id.rbSixin:

th.setCurrentTabByTag("TS_SIXIN");

break;

case R.id.rbComment:

th.setCurrentTabByTag("TS_COMMENT");

break;

case R.id.rbRefresh:

th.setCurrentTabByTag("TS_REFRESH");

break;

case R.id.rbMore:

th.setCurrentTabByTag("TS_MORE");

break;

default:

break;

}

更多相关文章

  1. Android全屏显示的两种方式
  2. android 学习(2)对话框
  3. Android动画效果
  4. Eclipse中Android项目XML文件的格式化配置
  5. Android(安卓)滑动效果入门篇(一)—— ViewFlipper
  6. Android(安卓)使用 TableLayout 布局拉伸宽度
  7. Android巴士
  8. Android(安卓)使用ViewPager实现广告条滚动
  9. TextView中ellipsize属性 + 走马灯效果

随机推荐

  1. 【干货分享】Kubernetes容器网络之CNI漫
  2. 【干货分享】Linux操作系统自动化测试平
  3. 知道 Redis-Cluster 么?说说其中可能不可
  4. 【干货分享】硬件加速介绍及Cyborg项目代
  5. PHP数组常用函数
  6. 【干货分享】虚拟机热迁移性能优化
  7. 全面演示: 函数的作用域与闭包,回调的使
  8. 国际域名争议,仲裁机构VS法院,谁说的算?
  9. 第1章 0125-php数据类型与检测,学习心得、
  10. 1208作业