我的主要活动是一个
但图标应该放置的空间仍然被保留下来,浪费了很多空间。如这个问题中已经指出的那样。看起来我不能简单地减少选项卡高度。我必须提供自己的
好的,但我想确保其余的样式(背景/着色)在所有设备上都保持一致的“Android”风格,就像使用默认选项卡指示器一样。因此,我不想提供自己的颜色。
我发现对于
这是我的选项卡指示器视图xml文件,来自一些教程:
编辑: 接下来,我尝试通过
结果看起来有点对又有点错。首先,它们又太高了,所以我没有获得任何东西。其次,现在所有选项卡的背景状态都链接在一起(活动、突出显示、已选等)。使用 drawable 上的
好的,这解决了第二个问题。它们的状态不再链接。但它们仍然太高。所以我使用
实际上,最终我就像使用
TabActivity
,但我的选项卡不需要图标。如在此问题中所答复的那样,我知道可以通过使用重载的TabHost.TabSpec.setIndicator(CharSequence label)
方法来省略图标。但图标应该放置的空间仍然被保留下来,浪费了很多空间。如这个问题中已经指出的那样。看起来我不能简单地减少选项卡高度。我必须提供自己的
View
以及带有TabHost.TabSpec.setIndicator(View view)
重载的方法。好的,但我想确保其余的样式(背景/着色)在所有设备上都保持一致的“Android”风格,就像使用默认选项卡指示器一样。因此,我不想提供自己的颜色。
我发现对于
TextView
文本颜色,可以使用@android:color/tab_indicator_text
,它似乎可以按预期工作。但我不知道从哪里获取默认的选项卡背景颜色。我还发现了@android:style/Widget.TabWidget
风格,但将其应用于TextView
或周围的LinearLayout
也似乎没有帮助。这是我的选项卡指示器视图xml文件,来自一些教程:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/tabLayout"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center"
android:padding="12dip" >
<TextView
android:id="@+id/tabText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@android:color/tab_indicator_text" />
</LinearLayout>
我该如何在自定义的视图上获得“Android默认”选项卡样式?
编辑: 接下来,我尝试通过
setIndicator(CharSequence)
添加默认选项卡,获取其指示器视图的 getBackground
drawable ,清除所有选项卡,添加我的自定义视图(见上文),然后将检索到的 drawable 放置在新指示器的 setBackground
中。结果看起来有点对又有点错。首先,它们又太高了,所以我没有获得任何东西。其次,现在所有选项卡的背景状态都链接在一起(活动、突出显示、已选等)。使用 drawable 上的
mutate()
一点用也没有。下一个技巧是:我添加了三个默认选项卡,获取了它们的所有背景,清除了它们,并为我的三个选项卡分别设置了一个背景。好的,这解决了第二个问题。它们的状态不再链接。但它们仍然太高。所以我使用
updateViewLayout
减小了 TabWidget
的高度。这样可以正常工作,但会在选项卡标识符顶部留下一个不匹配的条。实际上,最终我就像使用
TabHost.TabSpec.setIndicator(CharSequence label)
方法时一样。而且,所有这些 hack 让我感到很不好。没有一种优雅的方法可以在自定义视图上获取默认的 Android 样式吗?