2

我在使用标签设置设计时遇到问题。因此,我为在 tabHost 中添加的每个 tabspec 创建了选择器。这是它的样子:

在此处输入图像描述

所以这是我的标签活动:

public class TabLayouts extends TabActivity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.tabhost);

        TabHost tabHost = getTabHost();
        tabHost.getTabWidget().setStripEnabled(false);

        TabSpec latest = tabHost.newTabSpec(getString(R.string.latest_title));
        tabHost.setBackgroundResource(R.drawable.tabbar);

        // setting Title and Icon for the Tab
        latest.setIndicator(getString(R.string.latest_title), getResources().getDrawable(R.drawable.latest_albums_sel));
        Intent latestAlbums = new Intent(this, LatestAlbums.class);
        latest.setContent(latestAlbums);

        TabSpec favorites = tabHost.newTabSpec(getString(R.string.favorites_title));
        favorites.setIndicator(getString(R.string.favorites_title), getResources().getDrawable(R.drawable.favorites_sel));
        Intent favoritesInt = new Intent(this, Favorites.class);
        favorites.setContent(favoritesInt);

        TabSpec downloaded = tabHost.newTabSpec(getString(R.string.downloaded_title));
        downloaded.setIndicator(getString(R.string.downloaded_title), getResources().getDrawable(R.drawable.downloaded_sel));
        Intent downloadedIntent = new Intent(this, Downloaded.class);
        downloaded.setContent(downloadedIntent);

        tabHost.addTab(latest);
        tabHost.addTab(favorites);
        tabHost.addTab(downloaded);
    }
}

我的选择器之一:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
     <!-- PRESSED TAB -->
    <item android:top="0dp" android:left="0dp" android:right="0dp" android:bottom="0dp"
        android:state_pressed="true"
        android:drawable="@drawable/menu3_pr"
        />
    <!-- INACTIVE TABS -->
    <item android:top="0dp" android:left="0dp" android:right="0dp" android:bottom="0dp"
        android:state_selected="false"
        android:state_focused="false"
        android:state_pressed="false"
        android:drawable="@drawable/menu3_nr"
        />
    <!-- ACTIVE TAB -->
    <item android:top="0dp" android:left="0dp" android:right="0dp" android:bottom="0dp"
        android:state_selected="true"
        android:state_focused="false"
        android:state_pressed="false"
        android:drawable="@drawable/menu3_pr"
        />
    <!-- SELECTED TAB -->
    <item android:top="0dp" android:left="0dp" android:right="0dp" android:bottom="0dp"
        android:state_focused="true"
        android:state_selected="true"
        android:state_pressed="false"
        android:drawable="@drawable/menu3_pr"
        />
</selector>

还有我的tabhost布局:

<?xml version="1.0" encoding="utf-8"?>
<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">
    <RelativeLayout
        android:background="@drawable/tabbar"
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent">
        <FrameLayout
            android:background="@drawable/background"
            android:layout_above="@android:id/tabs"
            android:id="@android:id/tabcontent"
            android:layout_width="fill_parent"
            android:layout_height="match_parent"/>
        <TabWidget
            android:showDividers="none"
            android:layout_alignParentBottom="true"
            android:id="@android:id/tabs"
            android:scaleY="0.8"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content" />
    </RelativeLayout>
</TabHost>

有人可以帮我解决这个问题吗?

4

1 回答 1

5

这是一种简单的技术,您应该使用.setIndicator()传递的一个参数,即

latest.setIndicator(getString(R.string.latest_title)). 

上面你正在使用

.setIndicator(getString(R.string.latest_title), getResources().getDrawable(R.drawable.latest_albums_sel))

现在删除第二个参数

getResources().getDrawable(R.drawable.latest_albums_sel)

从您的代码中以及何时添加所有选项卡,例如

tabHost.addTab(latest);
tabHost.addTab(favorites);
tabHost.addTab(downloaded); 

使用下面的代码

tabHost.getTabWidget().getChildAt(0).setBackgroundResource(R.drawable.latest);
tabHost.getTabWidget().getChildAt(1).setBackgroundResource(R.drawable.favorites);
tabHost.getTabWidget().getChildAt(2).setBackgroundResource(R.drawable.downloaded);

你完成了:) 这对我有帮助,希望你也能解决你的问题。

于 2013-10-04T08:04:40.117 回答