更改选项卡主机的背景在 ICS 中工作,但在较低版本中会导致问题



为了使选项卡主机透明,我实现了以下代码。

    for(int i = 0; i < th.getTabWidget().getTabCount(); i++)
    {
    th.getTabWidget().getChildAt(i).setBackgroundColor(Color.TRANSPARENT);
    }

这会在 ICS 中成功将所有选项卡的背景更改为透明,但是当我在 2.2 和 2.3 上测试它时前 3 个选项卡背景是透明的,后 3 个不是(我总共有 6 个选项卡((顺便说一下,第一个 3 个选项卡是该活动开始时出现的选项卡(

是什么原因造成的,我该如何解决它...请帮忙..

应用您的建议后,这就是我包含在代码中的内容,

        th.setOnTabChangedListener(new OnTabChangeListener(){
        @Override
        public void onTabChanged(String tabId) {
            manageTabBackgrounds();
        }
        private void manageTabBackgrounds() {
            // TODO Auto-generated method stub
            for(int i = 0; i < th.getTabWidget().getTabCount(); i++)
            {
            th.getTabWidget().getChildAt(i).setBackgroundColor(Color.TRANSPARENT);
            }
        }           
    });

但是,这似乎对选项卡没有影响...请指导..

确保在 TabChanged 上执行此操作...

将你所拥有的内容放在一个函数中(例如,"manageTabBackgrounds",然后:

yourTabHostInstance.setOnTabChangedListener(new OnTabChangeListener(){
    @Override
    public void onTabChanged(String tabId) {
        manageTabBackgrounds();
    }           
});

这就是最终对我有用的东西。

  th.setOnTabChangedListener(new OnTabChangeListener(){
        @Override
        public void onTabChanged(String tabId) {
            // TODO Auto-generated method stub
             for(int i=0;i<th.getTabWidget().getChildCount();i++)
                {
                   th.getTabWidget().getChildAt(i).setBackgroundColor(Color.TRANSPARENT); //unselected
                }
                th.getTabWidget().getChildAt(th.getCurrentTab()).setBackgroundColor(Color.TRANSPARENT); // selected
        }
        });

你试过这个吗?

<TabWidget
        android:id="@android:id/tabs"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:background="@color/transparent">
    </TabWidget>

相关内容

  • 没有找到相关文章

最新更新