2013-10-22 25 views
7

chủ đề ứng dụng của tôi trông giống như thể hiện trong hình bên dưới:Làm cách nào để thay đổi biểu tượng tràn của thanh tác vụ theo ngữ cảnh mà không thay đổi biểu tượng này cho thanh tác vụ chuẩn?

action bar with white overflow icon

Đúng như chủ đề dựa trên Theme.Holo.Light chứa văn bản thanh hành động đen tối và biểu tượng tràn, tôi điều chỉnh các biểu tượng tràn bằng cách sử dụng phong cách sau đây:

<style name="ActionBar.Light" parent="android:style/Widget.Holo.ActionBar"> 
    <item name="android:background">@color/highlight</item> 
    <item name="android:titleTextStyle">@style/TextAppearance.ActionBar.Title.Light</item> 
    <item name="android:subtitleTextStyle">@style/TextAppearance.ActionBar.Subtitle.Light</item> 
</style> 
... 
<style name="Theme.Light" parent="@android:style/Theme.Holo.Light"> 
    ... 
    <item name="android:actionBarStyle">@style/ActionBar.Light</item> 
    <item name="android:actionOverflowButtonStyle">@android:style/Widget.Holo.ActionButton.Overflow</item> 
    ... 
</style> 

Khi một hoặc nhiều mục danh sách được kiểm tra tôi muốn hiển thị một thanh hành động theo ngữ cảnh trắng, nhưng tiếc là biểu tượng tràn trắng là không hiển thị trên nền trắng:

contextual action bar with white overflow icon on white background

Bất kỳ ý tưởng nào về cách thay đổi biểu tượng tràn chỉ cho thanh ngữ cảnh - theo kiểu hoặc theo chương trình?

Cách giải quyết cuối cùng (ngày 27 tháng 2 năm 2014)

Dường như không có một tùy chọn để thay đổi biểu tượng tràn của thanh tác vụ theo ngữ cảnh độc lập với một trong những hành động thanh tiêu chuẩn. Vì vậy, tôi không còn lựa chọn nào khác ngoài việc thay đổi màu nền của thanh theo ngữ cảnh để một màu xám đậm, để làm cho nút tràn trắng có thể nhìn thấy:

gray contextual action bar

Các biểu tượng trên bên phải là dưới sự kiểm soát của tôi, vì vậy nó là dễ dàng thay đổi chúng. Biểu tượng "được thực hiện" ở bên trái và văn bản (bộ đếm kiểm tra) có thể dễ dàng được thay đổi bằng cách sử dụng các thuộc tính chủ đề. Chỉ có dấu phân cách mỏng giữa biểu tượng "đã thực hiện" và bộ đếm séc không thể thay đổi bằng các thuộc tính. Họ sẽ yêu cầu bố trí tùy chỉnh - đó là lý do tại sao tôi để nó như thế nào bây giờ.

Dưới đây là bối cảnh thanh phong cách của tôi và phần có liên quan từ chủ đề:

<style name="TextAppearance.ActionBar.Title" parent="@android:style/TextAppearance.Holo.Widget.ActionBar.Title"> 
    <item name="android:fontFamily">sans-serif-light</item> 
</style> 
<style name="TextAppearance.ActionBar.Title.Light"> 
    <item name="android:textColor">#ffffff</item> 
</style> 

<style name="ContextualBar.Light" parent="android:style/Widget.Holo.ActionMode"> 
    <item name="android:background">#666666</item> 
    <item name="android:titleTextStyle">@style/TextAppearance.ActionBar.Title.Light</item> 
    <item name="android:actionMenuTextColor">#ffffff</item> 
</style> 

<style name="Theme.Light" parent="@android:style/Theme.Holo.Light"> 
    ... 
    <item name="android:actionBarStyle">@style/ActionBar.Light</item> 
    <item name="android:actionModeStyle">@style/ContextualBar.Light</item> 
    <item name="android:actionModeCloseDrawable">@drawable/ic_action_done</item> 
    <item name="android:actionOverflowButtonStyle">@android:style/Widget.Holo.ActionButton.Overflow</item> 
    <item name="android:actionMenuTextColor">#ffffff</item> 
    ... 
</style> 

Ads: Bạn có thể xem kết quả đầy đủ trong the final app "uPod" trong đó có sẵn tại Google Play!

+0

Có thể dễ dàng hơn để chỉ cần thay đổi màu nền thanh hành động theo ngữ cảnh để một số màu xanh nhạt. –

+0

này, bạn đã tìm ra điều này chưa? Tôi đã nhấn cùng một vấn đề – Zen

+0

@alexsummers Dường như không có cách nào đơn giản là không có các biểu tượng tràn khác nhau cho thanh tác vụ chuẩn và ngữ cảnh. Tôi đã thay đổi nền của thanh theo ngữ cảnh thành màu xám đậm, để các biểu tượng màu trắng hiển thị. – sven

Trả lời

2

Mở chủ đề của bạn và giả định của bạn sử dụng Appcompat

<style name="AppTheme" parent="Theme.AppCompat.NoActionBar"> 
    <item name="android:actionOverflowButtonStyle">@style/OverFlowStyle</item> 
</style> 
<style name="OverFlowStyle" parent="Widget.AppCompat.ActionButton.Overflow"> 
    <item name="android:src">@drawable/your_selector_drawable_here</item> 
</style> 
+0

Tôi đang sử dụng thanh tác vụ gốc. Và như xa như tôi có thể thấy phong cách của bạn sẽ thay đổi biểu tượng cho cả hai: chế độ bình thường và chế độ theo ngữ cảnh. Tôi muốn có các biểu tượng khác nhau cho chế độ bình thường và theo ngữ cảnh. – sven

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