我们对 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 上标签本身的样子(坏版本):
最后,这就是它应该的样子(在姜饼上......好版本):
所以重申一下:标签的背景颜色是黑色(当它通常是漂亮的蓝色时),虽然很难从糟糕的屏幕截图中分辨出来,但任何一个标签的图标都没有出现在果冻豆上. 我希望这个问题在这里得到了足够的概述。如果我遗漏了什么,请告诉我。先感谢您!