เป็นไปได้ไหมที่จะเปลี่ยนไอคอนล้นในแถบการทำงาน ฉันมีไอคอนสีน้ำเงินสำหรับรายการ ActionBar ทั้งหมดและฉันต้องการเปลี่ยนไอคอนล้นเมื่อปรากฏขึ้นด้วย
เป็นไปได้ไหมที่จะเปลี่ยนไอคอนล้นในแถบการทำงาน ฉันมีไอคอนสีน้ำเงินสำหรับรายการ ActionBar ทั้งหมดและฉันต้องการเปลี่ยนไอคอนล้นเมื่อปรากฏขึ้นด้วย
คำตอบ:
คุณสามารถมีสไตล์ได้ แต่คุณต้องเพิ่มในการประกาศธีมหลัก
<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>
คุณยังสามารถเปลี่ยนแปลงได้แบบไดนามิกซึ่งฉันจะอธิบายรายละเอียดที่นี่:
parent="Widget.Sherlock.ActionButton.Overflow"
parent="@style/Widget.AppCompat.ActionButton.Overflow"
ดูเหมือนว่าจะใช้ได้กับฉัน
เปลี่ยนไอคอนโอเวอร์โฟลว์ที่กำหนดเองของ Actionbar ใน 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>
ใส่ธีม "MyTheme" ที่กำหนดเองในแท็กแอปพลิเคชันของ AndroidManifest.xml
<application
android:name="com.example.android.MainApp"
android:theme="@style/AppTheme">
</application>
มีความสุข.@.@
ไม่ว่าฉันจะพยายามทำอะไรstyles.xml
แต่ก็ไม่มีวิธีแก้ปัญหาใดที่เหมาะกับฉัน ท้ายที่สุดหากคุณมี AppCompat 23+ ซึ่งคุณควรเป็นวิธีที่ง่ายที่สุดที่ใช้งานได้จริง:
toolbar.setOverflowIcon(drawable);
คำตอบของ @ adnealถูกต้อง (นี่เป็นเพียงคำอธิบายของชุมชน wiki เพื่อขยายความ)
ความคิดเห็นหนึ่งชี้ให้เห็นว่าอาจมีความเข้าใจผิดในการทำเช่นนี้ดังนั้นคำตอบของฉันจึงเป็นเพียงอีกตัวอย่างหนึ่งในการลบล้างรูปภาพไอคอน Overflow
โค้ดด้านล่างเป็นไปตามรูปแบบเทมเพลตจาก ADT ตัวอย่าง New Android Project รหัสมาจากstyles.xml
ไฟล์ในres/values
โฟลเดอร์
<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>
อะไรโค้ดข้างต้นนี้จะเปลี่ยนไอคอนล้นเริ่มต้นกับสิ่งที่คุณมี drawable ic_menu_moreoverflow
ที่ชื่อ หากคุณต้องการวิธีทดสอบอย่างรวดเร็วให้ใช้ชื่อไฟล์ไอคอนตัวเรียกใช้งานแอปของคุณซึ่งจะทำให้ชัดเจนว่ามันทำงานอย่างไร
แหล่งข้อมูลที่มีประโยชน์ที่จะใช้เมื่อพยายามทำความเข้าใจกับActionBar
รูปแบบคือ:
คุณสามารถกำหนดสีที่ต้องการใช้สำหรับไอคอน Overflow ได้ที่นั่นและไฟล์ ZIP จะรวมstyles.xml
ไฟล์ที่ถูกต้องไว้ให้คุณ
สำหรับการเปลี่ยนสีไอคอน Overflow คุณสามารถเพิ่มได้
toolbar.setOverflowicon(getDrawable(R.id.whiteIcon));
หรือ
toolbar.setOverflowicon(getDrawable(R.id.redIcon));
มันจะเปลี่ยนไอคอนเลือกสีอะไรก็ได้ที่คุณต้องการและตั้งเป็น Overflowicon
หลังจากค้นหาอยู่นานสิ่งที่ฉันได้รับคำแนะนำที่จะปฏิบัติตาม:
เพิ่มรายการภายในธีมใน theme.xml:
<item name="android:actionBarWidgetTheme">@style/widgetStyle</item>
<item name="android:actionOverflowButtonStyle">@style/MyActionButtonOverflow</item>
เพิ่มไอคอนตามสไตล์ในไฟล์เดียวกันฉันหมายถึง theme.xml:
<style name="MyActionButtonOverflow" parent="android:style/Widget.Holo.ActionButton.Overflow">
<item name="android:src">@drawable/icon_menu</item>
</style>
ตรวจสอบไอคอนแบบกำหนดเองที่คุณต้องการเปลี่ยนแปลง
มันได้ผลสำหรับฉัน