2012-10-13 23 views
8

Tôi đang sử dụng thư viện ViewpagerIndicator bởi Jake Wharton. Tôi đang sử dụng mã tab cùng với thư viện ActionBarSherlock. Mọi thứ đều hoạt động tốt, nhưng tôi đang cố gắng tạo kiểu cho nền của các tab và không thể tìm ra cách. Tôi muốn một thanh tác vụ tối với các tab tối và các mảnh sáng (nội dung tab).Làm cách nào để thay đổi nền tab trên các tab viewpagerindicator?

Chủ đề cơ bản tôi đang sử dụng là Theme.Sherlock.Light.DarkActionBar. Tôi mở rộng kiểu này bằng cách đặt nó làm cha mẹ của một kiểu đặt thuộc tính cho các tab (như màu văn bản, màu chỉ báo, v.v.). Điều này dẫn đến thanh hành động tối, các tab ánh sáng và các mảnh sáng.

Tôi không thể tìm thấy bất kỳ thứ gì sẽ thay đổi nền của các tab. Cách duy nhất tôi có thể thay đổi nó là bằng cách thay đổi toàn bộ ứng dụng thành tối (bằng cách sử dụng Theme.Sherlock). Dưới đây là mã của tôi cho đến nay:

<style name="vpiTheme" parent="Theme.Sherlock.Light.DarkActionBar"> 
    <item name="vpiTabPageIndicatorStyle">@style/CustomTabPageIndicator</item> 
</style> 

<style name="CustomTabPageIndicator" parent="Widget.TabPageIndicator"> 
    <item name="android:textColor">#FF000000</item> 
    <item name="android:paddingTop">6dp</item> 
    <item name="android:paddingBottom">6dp</item> 
    <item name="android:paddingLeft">16dip</item> 
    <item name="android:paddingRight">16dip</item> 
    <item name="android:maxLines">2</item> 
</style> 

Trả lời

0

Đầu tiên thêm một drawable để dự án của bạn, dưới đây được gọi là tab_indicator.xml:

<?xml version="1.0" encoding="utf-8"?> 

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
<item android:state_focused="false" android:state_selected="false" android:state_pressed="false" android:drawable="@android:color/black" /> 
<item android:state_focused="false" android:state_selected="true" android:state_pressed="false" android:drawable="@android:color/white" /> 
<item android:state_focused="true" android:state_selected="false" android:state_pressed="false" android:drawable="@android:color/black" /> 
<item android:state_focused="true" android:state_selected="true" android:state_pressed="false" android:drawable="@android:color/white" /> 
</selector> 

Sau đó tham khảo drawable của bạn trong phong cách của bạn:

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

Điều này sẽ làm cho tab hoạt động có nền trắng và các màu đen khác.

+0

Điều này sẽ thay thế các chỉ báo màu sẽ không? – Flyview

+0

Vâng, đúng vậy. Tôi đã quên rằng mục tiêu của tôi là xóa chỉ báo. Các câu trả lời ở đây http://stackoverflow.com/questions/10364045/actionbarsherlock-actionbar-custom-background-with-divider nên được áp dụng, như các chỉ số mặc định/nền được thực hiện với một hình ảnh vá 9. – grant

7

Kể từ khi drawables 9-patch chủ yếu là trong suốt, màu sắc của các tab có thể được thay đổi bằng cách thêm vào một màu nền cho toàn bộ ViewPagerIndicator, như thế này:

<com.viewpagerindicator.TabPageIndicator 
    android:id="@+id/indicator" 
    android:layout_height="wrap_content" 
    android:layout_width="fill_parent" 
    android:background="#333333" /> 

Bằng cách này bạn có thể tiếp tục sử dụng một chủ đề dựa trên Theme.Sherlock.Light.DarkActionBar và không cần tạo các bản vẽ mới.