2012-11-08 31 views
16

Tôi đang gặp khó khăn với việc tạo kiểu cho ActionBar. Ứng dụng của tôi có một ActionBar với ba tab. Tôi đang cố gắng để có được tab được chọn để có màu nền và các tab không được chọn để hiển thị màu khác. Tôi đang theo dõi tham chiếu này: Customizing Action Bar. Nhưng tất cả các TAB đều hiển thị màu đã chọn.Cách tạo StyleBar, nền tab trên tab đã chọn

tập tin styles.xml của tôi là như sau:

<style name="MyActionBarTabStyle" parent="android:style/Widget.Holo.Light.ActionBar.TabBar"> 
    <item name="android:background">@drawable/tab_background</item> 
    <item name="android:paddingLeft">32dp</item> 
    <item name="android:paddingRight">32dp</item> 
</style> 

<style name="MyActionBarTabBarStyle" parent="android:style/Widget.Holo.Light.ActionBar.TabBar"> 

    <item name="android:background">@drawable/red</item> 
</style> 


<style name="AppTheme.Light" parent="@android:style/Theme.Holo.Light"> 
    <item name="android:actionBarStyle">@style/ActionBar.Light</item> 
    <item name="android:actionBarTabStyle">@style/MyActionBarTabStyle</item> 
    <item name="android:actionBarTabBarStyle">@style/MyActionBarTabBarStyle</item> 

</style> 

tab_background chỉ là một bản vá 9. Tôi cũng không chắc liệu tôi có kế thừa tab thanh tác vụ từ cha mẹ chính xác hay không (parent="android:style/Widget.Holo.Light.ActionBar.TabBar). Tôi đã xem qua các tài liệu tham khảo & thấy rất khó hiểu cấu trúc phân cấp kiểu

Tại sao các tab của tôi không hiển thị được chọn hay không? Cảm ơn trước sự giúp đỡ của bạn.

+0

Sử dụng [ActionBarSherlockStyleGenerator] (http://jgilfelt.github.com/android-actionbarstylegenerator/ # name = example & compat = holo & theme = light & actionbarstyle = solid & backColor = E4E4E4,100 & secondaryColor = D6D6D6,100 & tertiaryColor = F2F2F2,100 & accentColor = 33B5E5,100) để tạo kiểu và sử dụng. Kiểm tra câu trả lời của tôi [ở đây] (http://stackoverflow.com/questions/13269482/change-background-of-the-actionbarsherlock-alone-not-the-tabs/13283261#13283261) – PravinCG

+0

Cảm ơn Pravin. ActionBarStyleGenerator rất hữu ích để tạo kiểu ActionBar – CocoNess

Trả lời

10

Tôi đã giải quyết được sự cố của mình. Ban đầu tôi không sử dụng Drawlist State List. Tôi đã sử dụng hình nền trực tiếp thay vì đi qua StateListDrawable. Sử dụng StateListDrawable, bạn có thể thiết lập một nền tảng khác nhau dựa trên việc liệu thẻ có được chọn hay không.

Vì vậy, tôi đã thêm các tập tin tab_background_select.xml

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_selected="true" 
     android:drawable="@drawable/tab_background" /> 

</selector> 

và tôi tham chiếu này từ tôi styles.xml:

<item name="android:background">@drawable/tab_background_select</item> 
+0

Cảm ơn bạn Dude;) +1 –

+3

Bạn có ý nghĩa gì khi tham chiếu đến từ tệp styles.xml? Làm thế nào bạn tham khảo nó và theo cách nào? Làm thế nào để làm điều đó? Tôi không thể có được nó để làm việc. Không có gì làm việc cho điều này, nó không bao giờ thay đổi bất kể tôi làm gì. Android có vẻ thực sự lỗi. Bố mẹ bạn đã giới thiệu cái gì? Bạn đã đặt tên cho nó là gì? Bạn đã tham chiếu gì trong tệp kê khai? –

+1

Câu trả lời hay :) sử dụng như thế này, ' ' – tenten

Các vấn đề liên quan