为了账号安全,请及时绑定邮箱和手机立即绑定

使用 XML 如何改变一个 tab 的背景?

使用 XML 如何改变一个 tab 的背景?

智慧大石 2019-03-13 14:15:01
在 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;

            }

        });
    }
}


查看完整回答
反对 回复 2019-04-27
  • 1 回答
  • 0 关注
  • 391 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信