是否可以更改TabHost / Widget背景颜色?或者至少是申请背景

时间:2011-12-12 05:30:16

标签: android background transparent android-tabhost tabwidget

我正在为我的Android应用创建一些自定义标签,但是设计师在顶部设计了带有小曲线的标签。因此,在这些曲线之间应该有“透明”的颜色。

制作曲线并不困难,但问题在于标签主机显然具有主题背景颜色(在我的情况下为白色),而不是透明的背景颜色。

我不认为可以制作透明的背景颜色,因为屏幕内容高于(在我的情况下)标签。第二种方法是将标签内容“移动”一些像素到tabWidget的顶部,但似乎也不可能。最后一种方法是,让应用程序背景颜色与默认的应用程序背景颜色相匹配或使用drawable作为背景会很好。

如果有可能的话?

如果没有,更糟糕的情况是简单地将背景颜色添加到每个标签;只是想知道。

谢谢!

1 个答案:

答案 0 :(得分:1)

您好希望对您有所帮助。

@Override
public void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.tab);

    host = getTabHost();

        host.addTab(host.newTabSpec(Constants.TAG_TAB1).setIndicator(Constants.TAG_TAB1,getResources().getDrawable(R.drawable.img1)).setContent(new Intent(this, Activity1.class)));
    host.addTab(host.newTabSpec(Constants.TAG_TAB2).setIndicator(Constants.TAG_TAB2,getResources().getDrawable(R.drawable.img2)).setContent(new Intent(this, Activity2.class);
    host.addTab(host.newTabSpec(Constants.TAG_TAB3).setIndicator(Constants.TAG_TAB3,getResources().getDrawable(R.drawable.img3)).setContent(new Intent(this, Activity3.class)));
    host.addTab(host.newTabSpec(Constants.TAG_TAB4).setIndicator(Constants.TAG_TAB4,getResources().getDrawable(R.drawable.img4)).setContent(new Intent(this, Activity4.class)));

        host.setCurrentTab(0);


        for(int i=0;i<host.getTabWidget().getChildCount();i++)
        {
            host.getTabWidget().getChildAt(i).setBackgroundResource(R.drawable.tab_bg);
        }
        host.getTabWidget().getChildAt(host.getCurrentTab()).setBackgroundResource(android.R.color.transparent);// selected

    host.setOnTabChangedListener(this);
}


    @Override
    public void onTabChanged(String tabId) 
    {

        for(int i=0;i<host.getTabWidget().getChildCount();i++)
        {
            host.getTabWidget().getChildAt(i).setBackgroundResource(R.drawable.tab_bg);
    }
        host.getTabWidget().getChildAt(host.getCurrentTab()).setBackgroundResource(android.R.color.transparent);// selected

    }