Android滑动Tab的实现(转)

在Android应用中,一般TabActivity和若干个Tab选项卡(TabWidget)。如果选项卡的数量超过了5个,就不适合放到一个屏幕中,这样可以让这些选项卡滑动起来。

滑动的选项卡的实现有好几种方式,在这些方式中,最简单也是我最满意的还是在原生的TabActivity上修改,将上面的选项卡改为可滑动的状态。这样既有新的滑动的效果,也保留了原有TabActivity的各项功能。

实现Tab可滑动基本的思路就是把上面的TabWidget放到一个HorizontalScrollView中,让TabWidget滑动起来。不过如果仅仅修改XML还是会产生问题,就是没有办法控制每个选项卡的宽度。所以还是需要在程序中设置每个选项卡的宽度。例如:

// 设置窗口的宽度
DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
int screenWidth = dm.widthPixels;
if (count < 4) {
    for (int i = 0; i < count; i++) {
        // 设置每个选项卡的宽度
        tabWidget.getChildTabViewAt(i).setMinimumWidth(screenWidth / 4);
    }
}

 自定义TabActivity主界面的XML:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
	android:orientation="vertical" android:layout_width="fill_parent"
	android:layout_height="fill_parent">
	<TabHost android:id="@android:id/tabhost" android:layout_width="fill_parent"
		android:layout_height="fill_parent">
		<LinearLayout android:orientation="vertical"
			android:layout_width="fill_parent" android:layout_height="fill_parent">
			<HorizontalScrollView android:layout_height="wrap_content"
				android:layout_width="fill_parent" android:scrollbars="none">
				<TabWidget android:id="@android:id/tabs"
					android:layout_width="fill_parent" android:layout_height="60dp" />
			</HorizontalScrollView>
			<FrameLayout android:id="@android:id/tabcontent"
				android:layout_width="fill_parent" android:layout_height="wrap_content"
				android:layout_weight="1" />
		</LinearLayout>
	</TabHost>
</LinearLayout>

 还有另外一种实现机制,通过Gallery来实现,大家可以参考一下:http://www.cnblogs.com/noTice520/archive/2011/03/09/1978408.html

posted on 2011-12-01 17:31  尘埃终会落定  阅读(5186)  评论(0编辑  收藏  举报

导航