38

tôi đã sử dụng hướng dẫn này để facelift ứng dụng Holo của tôi cho Lollipop: http://android-developers.blogspot.ru/2014/10/appcompat-v21-material-design-for-pre.htmlStyling ActionMode ActionBar trong Android 5.0 Lollipop (với AppCompat)

Những gì tôi có:

  1. Theme

    <style name="MyTheme" parent="Theme.AppCompat.Light.NoActionBar"> 
        <item name="windowActionModeOverlay">true</item> 
        <item name="colorPrimary">@color/theme_primary</item> 
        <item name="colorPrimaryDark">@color/theme_primary_dark</item> 
        <item name="colorAccent">@color/theme_accent</item> 
    </style> 
    
  2. Bố cục thanh công cụ

    <android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android" 
        xmlns:app="http://schemas.android.com/apk/res-auto" 
        android:id="@+id/toolbar" 
        android:layout_height="wrap_content" 
        android:layout_width="match_parent" 
        android:minHeight="?attr/actionBarSize" 
        android:background="?attr/colorPrimary" 
        app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" 
        app:popupTheme="@style/ThemeOverlay.AppCompat.Light" /> 
    
  3. Hoạt động thừa hưởng từ ActionBarActivity với một mảnh ListFragment ở chế độ đa lựa chọn

    getListView().setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL);

quả: Thanh công cụ là OK. Nó sử dụng các màu chủ đề được phân tách, nhưng ActionBar được sử dụng bởi ListFragment trong ActionMode (được kích hoạt bằng cách nhấn và giữ một mục danh sách) có màu Dark.ActionBar tiêu chuẩn. Ngoài ra, menu bật lên của thanh tác vụ sử dụng chủ đề tối.

Tôi đã thử tất cả các thủ thuật SO, nhưng vẫn không thể giải quyết được điều đó. Tôi sẽ đánh giá cao sự giúp đỡ nào.

BTW. Tôi thấy rằng các màu tối của ActionBar là do thanh công cụ của app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar", nhưng không có ý tưởng làm thế nào giải quyết điều này, bởi vì thuộc tính này là cần thiết cho sự xuất hiện thanh công cụ chính xác.

Toolbar with correct colorsDark ActionBar

Trả lời

75

Chỉ cần thêm hai dòng sau với chủ đề:

<item name="actionModeBackground">@color/theme_primary_dark</item> 
<item name="actionBarPopupTheme">@style/ThemeOverlay.AppCompat.Light</item> 
+0

Sau rất nhiều thời gian dành cho vấn đề này, điều này thực sự hiệu quả. Cám ơn! – Sandra

+29

Đã lãng phí rất nhiều thời gian để làm việc này, chỉ để nhận ra rằng, để làm được điều này trong Thanh công cụ của AppCompat, bạn sẽ phải xóa phần _ "android:" _ của tên của mục đó. Hy vọng rằng điều này sẽ giúp bất kỳ người nào khác đọc chủ đề này :) – Jun

+1

cảm ơn! những gì về màu sắc thanh trạng thái? nó sẽ trắng khi 'actionmode' hiển thị? – sajad

3

này cũng có thể hữu ích trong việc Ngoài @Andrey Shcherbakov 's câu trả lời nếu bạn muốn có thêm quyền kiểm soát của mỗi màu riêng biệt.

<!-- action bar title text color, icon color (ie: back icon, icons when editing text)--> 
<item name="android:textColorPrimary">#FFFF00</item> 

<!-- action bar background color--> 
<item name="android:colorBackground">#444400</item> 

<!-- color of line under contextual action bar--> 
<item name="colorControlActivated">#00CC00</item> 
Các vấn đề liên quan