我有一个应用程序,我设置了5个标签,除了我最近注意到的一个问题之外,它完美无缺。在大屏幕尺寸上,由于某种原因,标签是透明的,当我在我的一个同事大型Android设备上试用该应用程序时,我才注意到这一点。所以我然后将模拟器设置为10英寸的大屏幕,并且它是相同的。
所以为了解决这个问题,我使用了这段代码
public static void setTabColor(TabHost tabhost) {
for (int i = 0; i < tabhost.getTabWidget().getChildCount(); i++) {
tabhost.getTabWidget().getChildAt(i)
.setBackgroundColor(Color.parseColor("#292929")); // unselected
// }
tabhost.getTabWidget().getChildAt(tabhost.getCurrentTab())
.setBackgroundColor(Color.parseColor("#8b8b8b")); // selected
}
}
然后我使用OnTabChangeListener并放置
setTabColor(tabHost);
每个标签更改下的。这解决了问题,因此所有屏幕尺寸的标签颜色都相同。但现在的问题是分频器消失了。我尝试使用
tabHost.getTabWidget().setDividerDrawable(R.drawable.separator);
但问题是在设置标签的内容并看到我已经设置之前必须调用这段代码
setTabColor(tabHost);
在每个标签更改时,它使它变得无用,因为它在应用程序加载时起作用,但是当你切换标签时,它再次消失,我无法再次调用它,否则应用程序将崩溃。
有没有人对如何解决这个问题有任何建议?也有人可以向我解释为什么标签在大屏幕上是透明的?为什么Android会这样做?
提前感谢您的任何帮助
答案 0 :(得分:2)
这是我对标签栏中分隔线的解决方案, 这是标签栏示例代码。
<TabWidget
android:id="@android:id/tabs"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:background="@drawable/tab_bar_bg_full"
android:divider="@null"
>
</TabWidget>
这是第一个标签
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="horizontal" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center"
android:orientation="vertical" >
<ImageView
android:id="@+id/imageView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/shuffle_start_btn" />
</LinearLayout>
<ImageView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:src="@drawable/tab_bar_divider_new" />
</LinearLayout>
这里我在选项卡xml
中包含了分隔线,它对我有用
答案 1 :(得分:1)
我解决了这个问题,事实证明我可以只选中标签,毕竟不需要使用标签分隔符。在这里使用此方法
public static void setTabColor(TabHost tabhost) {
for (int i = 0; i < tabhost.getTabWidget().getChildCount(); i++) {
tabhost.getTabWidget().getChildAt(i)
.setBackgroundColor(Color.parseColor("#292929")); // unselected
// }
tabhost.getTabWidget().getChildAt(tabhost.getCurrentTab())
.setBackgroundColor(Color.parseColor("#8b8b8b")); // selected
}
}
在标签中着色