Android中的TabHost使用起来其实比较麻烦,而且不支持图片的混排。研究了几天找出来一个比较可行的办法:使用LinearLayout,基本可以比较简单且美观地解决上面的问题。先看代码:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<!-- 定制菜单 -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="3dp"
android:background="#333333"
android:baselineAligned="false" >
<LinearLayout
android:id="@+id/layXZSJ"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_marginTop="-4dp"
android:layout_weight="1"
android:background="@drawable/my_background"
android:clickable="true"
android:gravity="center"
android:orientation="vertical" >
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@android:drawable/ic_menu_add" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="-4dp"
android:text="新增数据"
android:textSize="16sp" />
</LinearLayout>
<LinearLayout
android:id="@+id/layLSJL"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_marginLeft="1dp"
android:layout_marginTop="-4dp"
android:layout_weight="1"
android:background="@drawable/my_background"
android:clickable="true"
android:gravity="center"
android:orientation="vertical" >
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@android:drawable/ic_menu_agenda" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="-4dp"
android:text="历史记录"
android:textSize="16sp" />
</LinearLayout>
<LinearLayout
android:id="@+id/laySJCX"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_marginLeft="1dp"
android:layout_marginTop="-4dp"
android:layout_weight="1"
android:background="@drawable/my_background"
android:clickable="true"
android:gravity="center"
android:orientation="vertical" >
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@android:drawable/ic_menu_search" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="-4dp"
android:text="数据查询"
android:textSize="16sp" />
</LinearLayout>
<LinearLayout
android:id="@+id/layFHSY"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_marginLeft="1dp"
android:layout_marginTop="-4dp"
android:layout_weight="1"
android:background="@drawable/my_background"
android:clickable="true"
android:gravity="center"
android:orientation="vertical" >
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@android:drawable/ic_menu_revert" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="-4dp"
android:text="返回上页"
android:textSize="16sp" />
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="1dp"
android:layout_marginTop="3dp"
android:background="#333333"
android:orientation="vertical" />
<!-- 定制菜单 -->
</LinearLayout>
将上面的xml文件保存为toolbar.xml,可以在其他布局文件中直接引用,引用的代码如下:
<include
android:id="@+id/include"
layout="@layout/toolbar" />
上面的菜单有几点需要注意的:
一、菜单引用的是Android系统内置的图片,可能不同的版本,图片会略有差别。如果要引用自定义图片,则需要修改配置。
二、要解决LinearLayout点击时变色问题,需要将clickable属性设置为true.
三、不同标签之间的分隔使用的是背景颜色的改变。
效果如下;