0

我们对 Android 开发还很陌生,如果这很明显,我们深表歉意。

我们正在使用选项卡式视图实现一个活动。我们遇到的问题是标签本身的图标和正确的颜色在 Jelly Bean (Android 4.2) 上没有正确显示。但是,它们确实可以在早期的 API 级别(例如 Gingerbread)上正确显示。

请注意:我们最初使用已弃用的 TabActivity 类创建了视图。但是,据我所知,这样做的“新”方式应该与旧方式没有什么不同?如果我错了,请纠正我。

这是包含选项卡主机布局的 xml:

<?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"
    android:background="@color/Black">

    <LinearLayout
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:padding="5dp">

        <include layout="@layout/logo_bar"/>

        <TabWidget
            android:id="@android:id/tabs"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_weight="0"/>

        <FrameLayout
            android:id="@android:id/tabcontent"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1" >
        </FrameLayout>
     </LinearLayout>
</TabHost>

这是相关的(我希望)活动代码:

public class MainTabActivity extends FragmentActivity implements TabHost.TabContentFactory
    private TabHost tabHost;
    // other instance variables ...

    @Override
    public void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        tabHost = (TabHost)findViewById(android.R.id.tabhost);
        tabHost.setup();

        TabSpec loginTabSpec = tabHost.newTabSpec(GlobalConstants.LOGIN_ACTIVITY);
        loginTabSpec.setIndicator("Settings", getResources().getDrawable(R.drawable.ic_action_settings_gear));
        loginTabSpec.setContent(this);

        TabSpec mainTabSpec = tabHost.newTabSpec(GlobalConstants.MAIN_ACTIVITY);
        mainTabSpec.setIndicator("Lone Worker", getResources().getDrawable(R.drawable.ic_action_settings_phone));
        mainTabSpec.setContent(this);

        tabHost.addTab(mainTabSpec);
        tabHost.addTab(loginTabSpec);
    }

这是 Jelly Bean 上标签本身的样子(坏版本):在此处输入图像描述

最后,这就是它应该的样子(在姜饼上......好版本):在此处输入图像描述

所以重申一下:标签的背景颜色是黑色(当它通常是漂亮的蓝色时),虽然很难从糟糕的屏幕截图中分辨出来,但任何一个标签的图标都没有出现在果冻豆上. 我希望这个问题在这里得到了足够的概述。如果我遗漏了什么,请告诉我。先感谢您!

4

1 回答 1

1

无论出于何种原因,在更高版本的 Android (>= ICS) 选项卡中,如果您使用的是文本标签或图标

setIndicator(CharSequence label, Drawable icon)

我怀疑您看不到任何文本的原因是因为 ICS 中选项卡的默认文本颜色为黑色,因此在您的黑色背景上看不到它。

一个解决方案是创建自己的视图并使用

setIndicator(View view)

此处有更多详细信息:选项卡中的图标未显示

在这里http://ondrejcermak.info/en/programovani/custom-tabs-in-android-tutorial/

于 2013-02-26T06:56:21.687 回答