2012-07-03 51 views
11

Có cách nào để thay đổi màu nền của thanh tab trong ActionBar mà không thay đổi màu nền trong phiên bản một dòng không?Thay đổi màu nền của tab ActionBar

Để làm rõ những gì tôi muốn: Ở chế độ dọc, ActionBar được chia thành hai dòng, chính ActionBar và các tab bên dưới. Ở chế độ ngang, các tab nằm trong ActionBar thực tế.

Tôi muốn thay đổi màu nền của chế độ dọc. Nếu tôi thay đổi nền trong TabView, nó sẽ được thay đổi cho cả hai chế độ. Tôi có phải tạo phong cách riêng cho những người đó không? Câu trả lời thứ hai: có cách nào để biết khi nào sẽ là hai dòng và khi nào thì không?

Hoặc tôi chỉ thiếu một cái gì đó?

Tôi đang sử dụng ActionBarSherlock btw

+0

Có thể điều này có thể giúp: http://stackoverflow.com/questions/10064411/change-actionbarsherlock-background-color – 0gravity

+1

Không có vấn đề nào không phải là nền tảng của ActionBar, mà là nền của thanh Tab. –

Trả lời

41

Tôi nghĩ rằng bạn đang tìm kiếm android:backgroundStacked thuộc tính của ActionBar phong cách:

<style name="MyTheme" parent="android:Theme.Holo.Light"> 
    <item name="android:actionBarStyle">@style/MyActionBarStyle</item> 
</style> 

<style name="MyActionBarStyle" parent="@android:style/Widget.Holo.Light.ActionBar.Solid"> 
    <item name="android:backgroundStacked">@drawable/my_stacked_background</item> 
</style> 

hoặc (Nếu sử dụng ActionBarSherlock):

<style name="MyTheme" parent="@style/Theme.Sherlock.Light"> 
    <item name="android:actionBarStyle">@style/MyActionBarStyle</item> 
    <item name="actionBarStyle">@style/MyActionBarStyle</item> 
</style> 

<style name="MyActionBarStyle" parent="@style/Widget.Sherlock.Light.ActionBar.Solid"> 
    <item name="android:backgroundStacked">@drawable/my_stacked_background</item> 
    <item name="backgroundStacked">@drawable/my_stacked_background</item> 
</style> 
+2

Đây là câu trả lời đúng! –

+1

Bạn có thể giải thích cách làm công việc này với chủ đề ánh sáng holo mặc định không? Bạn đặt tên cho nó là gì? Bạn gọi gì trong tệp kê khai? Điều này không hoạt động. –

3

Trong ActionBarSherlock của values/abs__themes.xml

<item name="actionModeSplitBackground">@drawable/abs__cab_background_bottom_holo_dark</item> 

Bạn phải tạo chủ đề riêng của bạn bắt nguồn từ ABS

<style name="AppTheme" parent="Theme.Sherlock"> 
    <item name="actionBarStyle">@style/MyActionBar</item> 
    <item name="android:actionBarStyle">@style/MyActionBar</item> 
</style> 

<style name="MyActionBar" parent="Widget.Sherlock.ActionBar"> 
    <item name="actionModeSplitBackground">@drawable/my_split_background</item> 
</style> 

Hy vọng điều này sẽ giúp bạn.

+0

Đó là những gì tôi nghĩ rằng nó có thể là, nhưng nó không thay đổi bất cứ điều gì. –

+0

Bạn đã áp dụng chủ đề này cho ứng dụng của mình trong AndroidManifest.xml chưa? – vasart

+0

Có. Nhưng đó là giá trị sai. Nếu bạn nhìn vào các tài sản thực tế (abs__cab_background_bottom_holo_dark) thanh màu xanh đang được sử dụng để cho thấy rằng nó được chọn là trên đầu trang, không phải ở phía dưới. Ngoài ra không có chế độ khác nhau cho lựa chọn/không được chọn, vv –

0

Để tách phong cách tùy thuộc vào định hướng bạn phải tạo trong thư mục /res bạn một thư mục mới có tên gọi layout-land (đối với chế độ phong cảnh) và layout-port (ở chế độ dọc) và đặt các file xml của bạn cho thanh tác vụ và thiết lập nó là phong cách cụ thể (với màu bạn muốn) trên mỗi thư mục.

+0

Cảm ơn, tôi biết điều đó. Nhưng nó không chỉ là cảnh quan/chân dung. Tôi giả định trên máy tính bảng nó sẽ luôn luôn chỉ là một dòng.Tôi biết tôi cũng có thể có phong cách riêng biệt cho màn hình lớn vv nhưng tôi không biết chế độ nào sẽ được sử dụng trong cấu hình nào. –

23

Để thay đổi màu Actionbar Tab của, Xin vui lòng sử dụng mã này:

// Ví dụ: nếu bạn muốn màu trắng làm nền tab, sau đó

getActionBar().setStackedBackgroundDrawable(new ColorDrawable(Color.parseColor("#FFFFFF"))); 
+0

Mã thuần túy tuyệt vời :) – ROR

+0

Cảm ơn bạn @ROR;) –

+0

ans tuyệt vời :) cảm ơn :) – Nevaeh

1
ColorDrawable colorDrawable = new ColorDrawable(Color.White); 
actionBar.SetStackedBackgroundDrawable(colorDrawable); 

cho xamarin folks.

+0

Một chút giải thích sẽ cải thiện câu trả lời này. –

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