Android tabwidget选中选项卡,底部有边框线

时间:2014-11-13 16:14:51

标签: android layout tabs android-tabhost tabwidget

我有一个tabhost,其布局如下。

https://drive.google.com/file/d/0B8nQOFcSOOboNkRFV091VVhzanc/view?usp=sharing (抱歉我无法发布照片,因为我是新用户)

我需要为所选标签设置浅蓝色边框。我如何使用浅蓝色边框选择我的选项卡?

请帮帮我,谢谢。

1 个答案:

答案 0 :(得分:0)

首先,你需要制作一个9补丁PNG,底部有边框线。我所知道的最快方式是:http://romannurik.github.io/AndroidAssetStudio/nine-patches.html

然后你会在你的drawable文件夹上创建一个选择器xml,就像这个tab_backgrounds.xml:

<!-- Non focused states -->
<item android:drawable="@color/xlight_grey" android:state_focused="false" android:state_pressed="false" android:state_selected="false"/>
<item android:drawable="@color/white_back" android:state_focused="false" android:state_pressed="false" android:state_selected="true"/>

<!-- Focused states -->
<item android:drawable="@color/xlight_grey" android:state_focused="true" android:state_pressed="false" android:state_selected="false"/>
<item android:drawable="@color/white_back" android:state_focused="true" android:state_pressed="false" android:state_selected="true"/>

<!-- Pressed -->
<!-- Non focused states -->
<item android:drawable="@color/light_grey_color" android:state_focused="false" android:state_pressed="true" android:state_selected="false"/>
<item android:drawable="@color/light_grey_color" android:state_focused="false" android:state_pressed="true" android:state_selected="true"/>

<!-- Focused states -->
<item android:drawable="@color/xlight_grey" android:state_focused="true" android:state_pressed="true" android:state_selected="false"/>
<item android:drawable="@color/light_grey_color" android:state_focused="true" android:state_pressed="true" android:state_selected="true"/>

对我来说,我只使用已在@color中定义的简单颜色,但无关紧要,您可以使用@drawable中的任何图片或@color中的颜色。或者在你的情况下,你应该使用底部边框制作9补丁。

然后你需要为你的@style定义一个样式样式,如下所示:

<style name="ThemeTabs" parent="@android:style/Theme.Holo.Light">
    <item name="android:actionBarTabStyle">@style/ActionBarTabStyle.Myactionbar</item>
</style>
<style name="ActionBarTabStyle.Myactionbar"    parent="@android:style/Widget.Holo.Light.ActionBar.TabView">
    <item name="android:background">@drawable/tabs_backgrounds</item>
</style>

在manifest.xml上,您只需为包含选项卡的活动添加此主题。像这样:

<activity
....
android:theme="@style/ThemeTabs"
.... >
</activity>

我发现这是自定义标签的最佳方式,您可以为每个州选择一种颜色或可绘制(聚焦,点击......)

我希望这有助于:)