2011-07-22 35 views
14

Làm cách nào để thay đổi biểu tượng Trình đơn tràn ở phía ngoài bên phải của thanh tác vụ như được thấy trong hình dưới đây? Chủ đề của tôi Holo chỉ định biểu tượng ngăn xếp màu đen 3 hàng này theo mặc định và tôi muốn một cái gì đó khác. tôi dường như không thể tìm ra giải pháp cho việc này. Tôi đã xem các tài liệu trên http://developer.android.com/guide/topics/ui/menus.html nhưng nó dường như không giúp đỡ nhiều.cách thay đổi biểu tượng trình đơn tràn trên Android

Cảm ơn!

"ActionBar"

+0

Hãy để lại biểu tượng đó một mình. Thời gian và thời gian một lần nữa, người dùng tấn công các nhà phát triển không tuân thủ các quy ước nền tảng cơ bản. Trừ khi bạn có thể chứng minh tích cực rằng người dùng của bạn sẽ từ chối ứng dụng của bạn nếu bạn * không * thay đổi biểu tượng đó, vui lòng để lại biểu tượng đó một mình. Điều đó đang được nói, tôi không thấy nơi mà biểu tượng đó có thể được thay đổi, anyway. – CommonsWare

+2

Lý do duy nhất tôi muốn thay đổi biểu tượng đó là làm cho màu trắng thay vì màu đen. Nền thanh tác vụ của tôi rất tối trong khu vực đó và gần như không thể thấy biểu tượng. Tôi không thay đổi quy ước nền tảng hay bất cứ điều gì kịch tính như vậy :) – newdev

+0

Ah, xin lỗi, tôi phản ứng quá mức. Người ta sẽ nghĩ rằng bất cứ nơi nào bạn đang kiểm soát phong cách cho thanh mà bạn có thể thay đổi biểu tượng đó. Tôi không thấy biểu tượng trong SDK, vì vậy tôi không có chuỗi tìm kiếm để tìm kiếm nó trong styles.xml hoặc kin. – CommonsWare

Trả lời

16

Xác định một phong cách tùy chỉnh: ví dụ, chúng ta hãy gọi nó customoverflow.

Trong phong cách này, bạn đặt android:src cho hình ảnh bạn muốn sử dụng. Bây giờ, tạo kiểu với cha mẹ Theme.holo.

Trong phong cách này, bạn cần phải xác định:

<item name="android:actionOverflowButtonStyle">@style/customoverflow</item> 

tôi chỉ thử nghiệm này và nó hoạt động.

+2

Nó không đủ tùy chỉnh. Giả sử bạn có nền sáng với nút tràn tối. Nếu bạn chọn nền tối cho mã hành động (CAB), bạn không thể chuyển nút tràn sang chế độ sáng. –

+0

cách đạt được điều này trong Appcompat? –

3

tôi nhận thấy rằng nó trở nên trắng nếu chủ đề của ứng dụng này là Holo, nhưng nó là đen khi chủ đề có Holo.Light

Tuy nhiên, thay đổi phong cách của thanh tác vụ để kế thừa từ Holo và phần còn lại của ứng dụng từ Holo.Light không giải quyết được vấn đề, nhưng nó nên chỉ theo hướng bạn nên sửa đổi kiểu nào.

Những gì tôi đã cố gắng là:

<style name="AppThemeLight" parent="android:style/Theme.Holo.Light"> 
    <item name="android:actionBarStyle">@style/ActionBar</item> 
    <item name="android:windowContentOverlay">@drawable/actionbar_shadow</item> 
</style>  
<style name="ActionBar" parent="android:style/Widget.Holo.Light.ActionBar"> 
    <item name="android:background">@color/header_brown</item> 
    <item name="android:titleTextStyle">@style/ActionBarTitle</item> 
    <item name="android:icon">@drawable/header</item>  
</style> 

Tôi có cùng một vấn đề và tôi nghĩ rằng đây là gần đến một giải pháp

26

Bạn có thể thử một cái gì đó như thế này:

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

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

và trong AndroidManifest.xml

<application 
    android:theme="@style/MyTheme" > 
0

giải pháp Shalafi của làm việc với một vài thay đổi! Bạn sẽ cần phải specifiy theme.Holo là cha mẹ cho chủ đề nhưng nó có nhược điểm của việc thay đổi màu văn bản mặc định (ít nhất là trong phong cách của tôi).

Mã sửa đổi nên:

<style name="AppThemeLight" parent="android:style/Theme.Holo"> 
    <item name="android:actionBarStyle">@style/ActionBar</item> 
    <item name="android:windowContentOverlay">@drawable/actionbar_shadow</item> 
</style>  
<style name="ActionBar" parent="android:style/Widget.Holo.Light.ActionBar"> 
    <item name="android:background">@color/header_brown</item> 
    <item name="android:titleTextStyle">@style/ActionBarTitle</item> 
    <item name="android:icon">@drawable/header</item>  
</style> 
8

Nếu bạn đang sử dụng AppCompat bạn có thể đạt được bằng cách làm theo mã.

res/values ​​/ themes.xml

<style name="MyTheme" parent="@style/Theme.AppCompat.Light"> 
    <item name="android:actionOverflowButtonStyle">@style/ActionButtonOverflow</item> 

     <!-- Support library compatibility --> 
    <item name="actionOverflowButtonStyle">@style/ActionButtonOverflow</item> 

</style> 

     <style name="ActionButtonOverflow" parent="@style/Widget.AppCompat.ActionButton.Overflow"> 
      <item name="android:src">@drawable/ic_launcher</item> 
     </style> 

và trong AndroidManifest.xml câu hỏi

<application 
    android:theme="@style/MyTheme" > 
+2

Tuyệt vời để chỉ ra sự khác biệt về tính tương thích của thư viện hỗ trợ –

0

Duplicate, Changing overflow icon in the action bar

Đây là câu trả lời của tôi như dưới đây,

  1. Thay đổi biểu tượng tràn tùy chỉnh của Actionbar theo kiểu.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ẻ áp dụng AndroidManifest.xml

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

Have fun. @. @

0

Về cơ bản tùy chỉnh Theme có sẵn trong các cấp API mới hơn có thể đi theo số res/values-vXX/styles.xml, trong khi các tùy chỉnh liên quan đến khả năng tương thích ngược có thể đi values/styles.xml

Giải pháp của Shalafi hoạt động với một vài bổ sung: Vì vậy, thêm mã này vào cả hai res/values-vXX/styles.xmlres/values/styles.xml và điều này sẽ hoạt động như Magic!

<style name="AppTheme" parent="android:style/Theme.Holo.Light"> 
<item name="android:actionOverflowButtonStyle">@style/MyActionButtonOverflow</item> 
</style> 

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

cũng thêm nó vào AndroidManifest.xml

<application 
    android:theme="@style/AppTheme" > 
Các vấn đề liên quan