2015-02-18 67 views
5

Tôi đang cố gắng tạo kiểu cho thanh công cụ appcompat-v7 của mình để có màu nền khác cho menu mục bổ sung của tôi. Tôi đã cố gắng sử dụng các chủ đề cho ứng dụng và kiểu cho thanh công cụ của mình, nhưng tôi không thể đạt được nó.Phong cách appcompat-v7 Thanh công cụ menu nền

Đây là thanh công cụ của tôi:

<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:minHeight="?attr/actionBarSize" 
    android:background="?attr/colorPrimary" 
    android:layout_width="match_parent" 
    app:theme="@style/AppToolbarTheme" 
    android:layout_height="wrap_content"> 

Đây là phong cách tôi đã tạo:

<style name="AppToolbarTheme" parent="Theme.AppCompat.NoActionBar"> 
     <item name="android:textColorPrimary">@color/white</item> 
     <item name="android:textColorSecondary">@color/cian</item> 
    </style> 

chủ đề chính của tôi là mở rộng Theme.Appcompat.Light.

Có ai biết cách tôi có thể làm điều đó không? Nếu không thể sử dụng các phong cách thì có cách nào khác để đạt được nó không?

+0

Kiểm tra câu hỏi này [http:// stackoverflow.com/questions/26699482/kiểu-popup-menu-in-android-5-0] [1] [1]: http://stackoverflow.com/questions/26699482/styling-the -popup-menu-in-android-5-0 – Semanticer

Trả lời

32

Thêm phần này vào yếu tố thanh công cụ của bạn

app:popupTheme="@style/ThemeOverlay.YourPopup" 

Sau đó, trong styles.xml xác định popup menu phong cách của bạn

<style name="ThemeOverlay.YourPopup" parent="ThemeOverlay.AppCompat.Light"> 
    <item name="android:colorBackground">@color/mtrl_white_100</item> 
    <item name="android:textColor">@color/mtrl_light_blue_900</item> 
</style> 

<style name="ThemeOverlay.YourPopup" parent="ThemeOverlay.AppCompat.Light"> 
    <item name="android:colorBackground">@color/mtrl_white_100</item> 
    <item name="android:textColorPrimary">@color/mtrl_light_blue_900</item> 
</style> 

Lưu ý rằng bạn cần sử dụng android:colorBackground và không bao giờ android:background. Sau này sẽ được áp dụng cho tất cả mọi thứ mà không có một nền (ở đây trình đơn chính nó và mỗi mục trình đơn), trước đây chỉ áp dụng cho menu popup.

Cập nhật: Điều tương tự cũng áp dụng cho textColorPrimarytextColor.

  • Mục menu bật lên xác định android:textColor="?android:textColorPrimary".
  • android:textColorPrimary là thuộc tính chủ đề, được xác định trên chủ đề.
  • android:textColor là thuộc tính kiểu, thuộc tính này được xác định trên tiện ích.
  • Nếu chúng tôi xác định android:textColor trong một chủ đề, nó sẽ được áp dụng cho mọi tiện ích không xác định riêng android:textColor.
+0

Cảm ơn @ eugen-pechanec, nó hoạt động tốt cho thực đơn của tôi! – viniciusmr3

+0

Điều này không hiệu quả đối với tôi, nhưng [this] (https://stackoverflow.com/questions/26554996/change-toolbar-color-in-appcompat-21) đã làm. – Android

+0

@Android Tôi đã mắc lỗi, cảm ơn vì đã chú ý, bây giờ nó sẽ hoạt động. –

1

Bạn không sử dụng không gian tên android khi bạn đang sử dụng thuộc tính AppCompat. Sửa đổi mã của bạn như sau:

<style name="AppToolbarTheme" parent="Theme.AppCompat.NoActionBar"> 
     <item name="textColorPrimary">@color/white</item> 
     <item name="textColorSecondary">@color/cian</item> 
</style> 
+0

làm việc này cho màu của biểu tượng trên thanh công cụ. Cảm ơn! – viniciusmr3

+0

Không tìm thấy tài nguyên nào khớp với tên đã cho: attr 'textColorPrimary'. – dr4cul4

+0

@ dr4cul4 tìm thấy như thế này ' @ color/white' –

0

Thêm vào thanh công cụ của bạn trong tập tin activity.xml của bạn: -

app:popupTheme="@style/ThemeOverlay.YourApp" 

Và sau đó trong styles.xml bạn thêm này: -

<style name="ThemeOverlay.YourApp" parent="ThemeOverlay.AppCompat.Light"> 
     <item name="android:colorBackground">@android:color/darker_gray</item> 
     <item name="android:textColorPrimary">@color/TextColorPrimary</item> 
    </style> 
Các vấn đề liên quan