Android tabwidget выбранная вкладка с линией границы внизу

у меня есть tabhost с макетом ниже.

https://drive.google.com/file/d/0B8nQOFcSOOboNkRFV091VVhzanc/view?usp=sharing (извините, я не могу опубликовать фото как новый пользователь)

Мне нужна голубая рамка для выбранной вкладки. Как сделать так, чтобы на моей выбранной вкладке была светло-синяя рамка?

Пожалуйста, помогите мне, спасибо.


person Nicholas Lai    schedule 13.11.2014    source источник


Ответы (1)


Во-первых, вам нужно сделать 9 патчей PNG с линией границы внизу. Самый быстрый из известных мне способов - это: http://romannurik.github.io/AndroidAssetStudio/nine-patches.html

Затем вы должны сделать селектор xml в своей папке с возможностью переноса, например, tabs_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"/>

For me, I just used simple colors already defined in @color but that doesn't matter, you can use any picture from @drawable, or color from @color. Or in YOUR case, the 9 patch that you should make with the border on the bottom.

Затем вам нужно определить стиль вкладок в вашем @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>

Я считаю, что это лучший способ настроить вкладки, вы можете выбрать цвет или возможность рисования для каждого состояния (сфокусировано, щелкнуто ...)

Надеюсь, это поможет :)

person Mohamed Hamdaoui    schedule 13.11.2014
comment
Привет, @Mohamed Hamdaoui, как насчет того, чтобы моя вкладка оказалась во фрагменте? поскольку фрагмент не имеет тега активности в AndroidManifest.xml - person Nicholas Lai; 14.11.2014
comment
Я добавляю атрибут темы к активности, которая обертывает фрагмент. - person Mohamed Hamdaoui; 27.11.2014