在 TabHost 标签中包含一个 TabWidget 标签。我想自定义选项卡的选中和未被选中的状态但是不知道如何把这些 xml 文件放在一起,从而来自定义选项卡?<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">
<LinearLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="5dp">
<TabWidget
android:id="@android:id/tabs"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
<FrameLayout
android:id="@android:id/tabcontent"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="5dp" />
</LinearLayout>
</TabHost>selected state:<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient android:startColor="#97150c" android:centerColor="#7F7F7F"
android:endColor="#b4190d" android:angle="-90" />
</shape>unselected state:<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient android:startColor="#acacac" android:centerColor="#7F7F7F"
android:endColor="#d7d7d7" android:angle="-90" />
</shape>
1 回答
BIG阳
TA贡献1859条经验 获得超6个赞
使用下面的代码,tw 指的是 TabWidget
for (int i = 0; i < tw.getChildCount(); i++) { View v = tw.getChildAt(i); v.setBackgroundDrawable(null); v.setOnTouchListener(new OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { // Change the icon and background colors TabWidget tw = getTabWidget(); for (int i = 0; i < tw.getChildCount(); i++) { View vv = tw.getChildAt(i); vv.setBackgroundDrawable(null); vv.setId(0); } NonScalingBackgroundDrawable nsbd = new NonScalingBackgroundDrawable(getApplicationContext(), v, R. drawable.nav_highlight); v.setBackgroundDrawable(nsbd); v.setId(1); return false; } }); } }
添加回答
举报
0/150
提交
取消