未验证,看着还不错

原文: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中常用的五种布局
  3. 边缘图片android布局属性详解
  4. androidUI设计之旅 ----布局文件属性解析
  5. Android 滑动效果入门篇(一)—— ViewFlipper
  6. android开发4:布局管理器1(线性布局,相对布局RelativeLayout-案例)

随机推荐

  1. python3函数中lambda/filter/map/reduce
  2. 20201203 装饰器之高阶函数
  3. 计算机网络中这些高频考题,你还在死记硬背
  4. flex项目的三个属性及商城页眉页脚布局
  5. php pdo 插入中文出现乱码解决 办法
  6. 基于 Flink 的实时特征平台在携程的应用
  7. Apache Kafka 2.0.0 正式发布,多项重要功
  8. 5大Top经济刊物的在40年里发生了什么?
  9. 一篇文章搞清楚什么是分布式系统 CAP 定
  10. gstvideo_has_codec: none can handle '