Thay đổi biểu tượng mục bổ sung trong thanh tác vụ


Câu trả lời:


255

Bạn có thể với một kiểu, nhưng bạn phải thêm nó vào phần khai báo Chủ đề chính.

<resources>
    <!-- Base application theme. -->
    <style name="Your.Theme" parent="@android:style/Theme.Holo">
        <!-- Pointer to Overflow style ***MUST*** go here or it will not work -->
        <item name="android:actionOverflowButtonStyle">@style/OverFlow</item>
    </style>

    <!-- Styles -->
    <style name="OverFlow" parent="@android:style/Widget.Holo.ActionButton.Overflow">
        <item name="android:src">@drawable/ic_action_overflow</item>
    </style>

</resources>

Bạn cũng có thể thay đổi nó một cách động, mà tôi sẽ đi vào chi tiết ở đây:

Thay đổi biểu tượng menu Phần bổ sung Android theo chương trình


1
Tôi đã tìm thấy giải pháp này khi xem xét mã nguồn, nhưng cảm ơn :) Đó là một câu trả lời hay.
pjanecze

6
LƯU Ý rằng điều này được áp dụng cho CHỦ ĐỀ, chứ không phải PHONG CÁCH. Tôi đã bị mắc kẹt một thời gian cho đến khi tôi nhận ra điều đó. Thx @aneal
Richard Le Mesurier

5
Điều này sẽ xảy ra trên máy tính bảng chạy Android 3.0 (API 11), vì nó không thích mọi người xác định kiểu "android: actionOverflowButtonStyle" (có thể là lỗi nền tảng). Vì vậy, bạn phải sử dụng các kiểu khác nhau trong giá trị-v11 / styles.xml và giá trị-v15 / styles.xml.
Mr-IDE

10
Và đối với người dùng ActionBarSherlock, phong cách chính là:parent="Widget.Sherlock.ActionButton.Overflow"
Nick White,

7
Đối với appcompat (v21 lollipop), parent="@style/Widget.AppCompat.ActionButton.Overflow"dường như phù hợp với tôi.
fattire

16

Đối với những người không thể làm cho nó hoạt động, hãy thử điều này KHÔNG có vùng tên "android:".

<item name="actionOverflowButtonStyle">@style/OverFlow</item>

Cảm ơn người bạn đời, điều này thực sự hữu ích. Bất cứ ai có một lời giải thích cho điều này?
DaMachk

4
@DaMachk Nếu bạn đang sử dụng AppCompat, thì đừng bao gồm không gian tên "android:".
matiash

4
  1. Thay đổi biểu tượng bổ sung tùy chỉnh của Thanh tác vụ trong styles.xml.

     <resources>
        <!-- Base application theme. -->
        <style name=“MyTheme" parent="@android:style/Theme.Holo">
           <!-- Pointer to Overflow style DONT forget! -->
           <item name="android:actionOverflowButtonStyle">@style/MyOverFlow</item>
        </style>
    
        <!-- Styles -->
        <style name="MyOverFlow" parent="@android:style/Widget.Holo.ActionButton.Overflow">
            <item name="android:src">@drawable/ic_your_action_overflow</item>
        </style>
     </resources>
  2. Đặt chủ đề tùy chỉnh "MyTheme" trong thẻ ứng dụng của AndroidManifest.xml

    <application
        android:name="com.example.android.MainApp"
        android:theme="@style/AppTheme">
    </application>

Chúc vui vẻ.@.@


4

Bất kể tôi đã cố gắng làm gì styles.xml, không có giải pháp nào phù hợp với tôi. Cuối cùng, nếu bạn có AppCompat 23+, thì đây là cách dễ nhất thực sự hoạt động:

toolbar.setOverflowIcon(drawable);

Cách chính xác nhất mà tôi đã tìm thấy!
Shubhamhackz

1

Câu trả lời của @ adneal là đúng (vì vậy đây chỉ là giải thích trên wiki cộng đồng để mở rộng về nó).

Một trong những nhận xét cho rằng có thể có sự hiểu lầm về cách thực hiện việc này, vì vậy câu trả lời của tôi chỉ là một ví dụ khác về cách ghi đè hình ảnh biểu tượng Overflow.

Mã bên dưới dựa trên các kiểu mẫu từ Dự án Android mới mẫu ADT. Mã đến từ styles.xmltệp trong res/valuesthư mục.


<style name="AppBaseTheme" parent="android:Theme.Light">
    <!--
        Theme customizations available in newer API levels can go in
        res/values-vXX/styles.xml, while customizations related to
        backward-compatibility can go here.

    -->
</style>

<!-- Application theme. -->
<style name="AppTheme" parent="AppBaseTheme">

    <!-- All customizations that are NOT specific to a particular API-level can go here. -->
    <item name="android:actionOverflowButtonStyle">@style/OverflowMenuButton</item>
</style>

<style name="OverflowMenuButton" parent="@android:style/Widget.Holo.ActionButton.Overflow">
    <item name="android:src">@drawable/ic_menu_moreoverflow</item>
</style>

Những gì mã ở trên này làm là thay thế biểu tượng tràn mặc định bằng bất kỳ biểu tượng có thể vẽ nào mà bạn có được đặt tên ic_menu_moreoverflow. Nếu bạn muốn có một cách nhanh chóng để kiểm tra, hãy sử dụng tên tệp biểu tượng trình khởi chạy của ứng dụng, điều này sẽ giúp bạn thấy rõ cách hoạt động của nó.

Một tài nguyên hữu ích để sử dụng khi cố gắng hiểu ActionBarkiểu, là:

Ở đó, bạn có thể xác định các màu cụ thể để sử dụng cho biểu tượng Overflow của mình và tệp ZIP sẽ bao gồm styles.xmltệp chính xác cho bạn.


1

Để thay đổi màu biểu tượng Overflow, bạn chỉ cần thêm

toolbar.setOverflowicon(getDrawable(R.id.whiteIcon));

hoặc là

toolbar.setOverflowicon(getDrawable(R.id.redIcon));

Nó sẽ thay đổi biểu tượng, chọn bất kỳ màu nào bạn muốn và đặt làm Overflowicon.


0

Sau thời gian dài tìm kiếm, tôi đã nhận được hướng dẫn như sau:

  1. Kiểm tra chủ đề trong tệp tuyên ngôn.
  2. Sau đó vào res-> giá trị-> chủ đề.
  3. Tìm tên chủ đề trong tệp này.
  4. Thêm mục bên trong chủ đề trong theme.xml:

    <item name="android:actionBarWidgetTheme">@style/widgetStyle</item>
    <item name="android:actionOverflowButtonStyle">@style/MyActionButtonOverflow</item>
  5. Thêm biểu tượng theo phong cách trong cùng một tệp, ý tôi là theme.xml:

    <style name="MyActionButtonOverflow" parent="android:style/Widget.Holo.ActionButton.Overflow">
    <item name="android:src">@drawable/icon_menu</item>
    </style>
  6. Kiểm tra biểu tượng tùy chỉnh mà bạn muốn thay đổi

Nó đã làm việc cho tôi

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.