转自:http://blog.csdn.net/knowheart/article/details/7049596

其实Android 中的底部菜单, 可以用分页控件很好的实现。 我们先将自定义分页控件做好, 就可以做到顶底两个位置的菜单了。

TabHost只是作为一个容器来存放一些Activity, 所以需要自己另外创建几个新的Activity, 然后由主TabHost加载。

tab_style.xml

是每个Tab的自定义样式

//分页控件样式<?xml version="1.0" encoding="UTF-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="wrap_content"android:layout_height="wrap_content"android:paddingLeft="5dip"android:paddingRight="5dip"android:paddingTop="5dip"android:background="@drawable/tab_bg"><FrameLayout android:layout_width="fill_parent"android:layout_height="fill_parent"android:layout_weight="0.6"><TextView android:id="@+id/tab_label"android:layout_width="fill_parent"android:layout_height="fill_parent"android:gravity="center"android:background="@drawable/tab_title_selector"android:textColor="#FFFFFF"android:textStyle="bold"/></FrameLayout></LinearLayout>

main_tab.xml 是主TabHost布局文件

//TabHost布局<?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="fill_parent"android:layout_height="fill_parent"> //必须包含下列三个View<LinearLayoutandroid:orientation="vertical"android:layout_width="fill_parent"android:layout_height="fill_parent"><FrameLayout android:gravity="center" android:id="@android:id/tabcontent"android:layout_width="fill_parent"android:layout_height="wrap_content"android:layout_weight="1.0"/>//TabWidget位置在FrameLayout之下则显示在低部, 在之上则显示在顶部<TabWidget android:id="@android:id/tabs"android:layout_height="wrap_content"android:layout_width="fill_parent"android:layout_weight="0.0"/></LinearLayout></TabHost>

tab_title_selector.xml

是Tab中TextView的按下背景

//选择器,指示Text按下后的背景<?xml version="1.0" encoding="UTF-8"?><selector xmlns:android="http://schemas.android.com/apk/res/android"><itemandroid:state_focused="true"android:drawable="@drawable/tab_btn_bg_d"/><itemandroid:state_selected="true"android:drawable="@drawable/tab_btn_bg_d"/><itemandroid:state_pressed="true"android:drawable="@drawable/tab_btn_bg_d"/></selector>

Activity类

另外还需要几个Activity类, 普通的Activity类即可, 在此不显示。

public class TabTest extends TabActivity{private TabWidget mTabWidget;private TabHostmTabHost;/** Called when the activity is first created. */@Overridepublic void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.main_tabs);mTabHost = getTabHost();//将要显示的Activity载入TabHost控件//要显示的Activity由自己自由创建setTabIndicator("one", 1, new Intent(this, OneActivity.class));setTabIndicator("Two", 2, new Intent(this, TwoActivity.class));setTabIndicator("Three", 3, new Intent(this, OneActivity.class));setTabIndicator("Four", 4, new Intent(this, TwoActivity.class));}private void setTabIndicator(String title, int nId, Intent intent){//使用指定Tab样式View view = LayoutInflater.from(this.mTabHost.getContext()).inflate(R.layout.tab_style, null);TextView text = (TextView)view.findViewById(R.id.tab_label);String strId = String.valueOf(nId);text.setText(title);//创建一个新TabTabHost.TabSpec localTabSpec = mTabHost.newTabSpec(strId).setIndicator(view).setContent(intent);//加载新TabmTabHost.addTab(localTabSpec);}}

更多相关文章

  1. Android(安卓)6.0 通话记录生成保存和读取显示
  2. Android中控制软键盘的方法总结
  3. 深入浅出学习 Android之Android布局管理:LinerLayout线性布局
  4. Android基础入门教程——2.3.11 Date & Time组件(上)
  5. Android(安卓)百度地图使几点始终在合适的屏幕范围内显示
  6. Android开发重修
  7. Android(安卓)应用软件开发(九)控件续
  8. Android(安卓)材料设计一
  9. 【android之ScrollView滚动视图】

随机推荐

  1. 六大布局之非常用布局
  2. Skype for Business预览版已登陆Android
  3. Android基于百度定位SDK v4.1(LBS)实现定位
  4. Android支付宝支付
  5. (续)Android热更新:Tinker热修复与Walle多渠
  6. Android有效的治疗方法Bitmap,减少内存
  7. Android(安卓)之Scroller 理解与应用
  8. Android(安卓)调用前置摄像头[原创]
  9. 手机音视频开发 视频聊天APP应用
  10. Android(安卓)JNI处理图片实现黑白滤镜的