ลบไอคอน / โลโก้จากแถบการกระทำบน Android


146

ฉันพยายามหาวิธีลบไอคอน / โลโก้ออกจากแถบแอ็คชัน แต่สิ่งเดียวที่ฉันพบหลังจากใช้เวลาค้นหาไฟล์เอกสารของ Android และ Google เป็นเวลาหนึ่งชั่วโมงคือวิธีลบแถบชื่อออกทั้งหมด นั่นไม่ใช่สิ่งที่ฉันต้องการ ต้องการลบไอคอน / โลโก้ออกจากแถบหัวเรื่องเท่านั้น

มีใครรู้วิธีการทำเช่นนี้? โดยเฉพาะอย่างยิ่งผมอยากจะทำเช่นนี้ในXML


1
คุณสามารถอ่านคู่มือ API บนแถบการทำงานได้ มันบอกว่าถูกต้องในคู่มือ
Mgamerz

6
ข้อมูลทุกชิ้นอยู่ที่ไหนสักแห่งที่จะพบ
กราฟ

คุณสามารถแสดงให้เราเห็นสิ่งที่คุณได้ลอง? สิ่งที่คุณพบก่อนหน้านี้ที่ไม่ทำงาน?
DForck42

@ DForck42 คำถามนี้ไม่เกี่ยวข้องกันอีกต่อไป (เกือบ 4 ปี) คุณสามารถหาวิธีมากมายในการบรรลุเป้าหมายนี้ในคำตอบที่นี่ด้านล่าง
Hrafn

คำตอบ:


58

หากคุณกำหนดไว้android:logo="..."ใน<application>แท็กของคุณAndroidManifest.xmlคุณต้องใช้สิ่งนี้เพื่อซ่อนไอคอน:

ธีม pre-v11

<item name="logo">@android:color/transparent</item>

ธีม v11 ขึ้นไป

<item name="android:logo">@android:color/transparent</item>

การใช้สองสไตล์นี้ซ่อนไอคอนแถบแอ็คชั่นไว้อย่างถูกต้องบนอุปกรณ์ 2.3 และ 4.4 สำหรับฉัน (แอพนี้ใช้AppCompat )


ใช้งานได้ แต่ในกรณีของฉันเมื่อฉันมีมุมมองการค้นหาและคลิกที่ / ขยายมุมมองไอคอนแอป / โลโก้ของฉันจะปรากฏขึ้นอีกครั้ง ความคิดใด ๆ
acrespo

@ ตอบสนองอืมฉันรู้ว่าสิ่งที่คุณกำลังพูดถึง แต่ฉันยังไม่ได้ตรวจสอบวิธีการแก้ปัญหาสำหรับที่ขอโทษ
Charles Madere

1
สิ่งที่ฉันสิ้นสุดที่ทำคือการตั้งค่า<application (...) android:logo="@android:color/transparent"> (...)ในของฉันAndroidManifest.xmlและบังคับให้useLogoสำหรับในสไตล์ของฉันเช่นนี้displayOptions <item name="android:displayOptions">showHome|useLogo|homeAsUp|showTitle</item> <item name="displayOptions">showHome|useLogo|homeAsUp|showTitle</item>ส่วนสุดท้ายนี้มีความสำคัญเช่นเดียวกับในอุปกรณ์บางอย่าง (ฉันคิดว่าส่วนใหญ่โพสต์อมยิ้ม) การค้นหาที่หยาบคายใช้ appIcon และวางแทนโลโก้แม้ว่าโลโก้จะถูกกำหนดอย่างโปร่งใส: s
acrespo

228

เพิ่มรหัสต่อไปนี้ในรูปแบบแถบการกระทำของคุณ:

<item name="android:displayOptions">showHome|homeAsUp|showTitle</item>
<item name="displayOptions">showHome|homeAsUp|showTitle</item>
<item name="android:icon">@android:color/transparent</item> <!-- This does the magic! -->

PS: ฉันใช้ Actionbar Sherlock และใช้งานได้ดี


2
เป็นเคล็ดลับที่ดีทีเดียวขอบคุณ! แม้จะหยุดการใช้พื้นที่ในแถบการกระทำ!
Igor Čordaš

6
ขอบคุณ .. มันทำงานในรหัสยัง ... actionBar.setIcon (android.R.color.transparent);
Jagdeep Singh

1
คำตอบที่ยอดเยี่ยม ... :)
Bytecode

24
อุปกรณ์ Samsung บางรุ่นแสดง@android:color/transparentเป็นสีดำ ดูเหมือนจะบ้า แต่ผู้ผลิตอุปกรณ์จำนวนมากแทนที่การตั้งค่าเริ่มต้นของ Android รวมถึงสี ด้วยเหตุนี้ฉันจะสร้างสีใน colors.xml ดังนี้: <color name="transparent">#00000000</color>และอ้างอิงว่าแทนที่จะรับค่าจาก Android
Matt W

1
@jose_GD: android: displayOptions เป็น v11 ขึ้นไปเท่านั้นดังนั้นคุณต้องใช้ทั้งสองอย่างเพื่อเข้ากันได้
Nilzor

115

หากคุณไม่ต้องการไอคอนในกิจกรรมเฉพาะ

getActionBar().setIcon(
   new ColorDrawable(getResources().getColor(android.R.color.transparent)));    

45
. getActionBar () คำสั่ง setIcon (android.R.color.transparent); ดูเหมือนจะเพียงพอแล้ว
Boy

วิธีการโทร getActionBar () .... เป็นทางออกที่ดีกว่าปัญหานี้ (ลบไอคอนออกจากแถบการกระทำ) เพราะถ้าคุณใช้แถบนำทางและแถบการกระทำแถบการกระทำของคุณจะอยู่เหนือแถบนำทาง หากคุณใช้ setDisplayShowHomeEnabled (false) ดังนั้นแถบนำทางจะอยู่เหนือแถบการกระทำและคุณไม่ต้องการสิ่งนี้
horkavlna

ฉันจะเปลี่ยนสิ่งนี้เป็น: ColorDrawable cd = new ColorDrawable(getResources().getColor(android.R.color.transparent)); cd.setBounds(0,0,0,0); getActionBar().setIcon(cd); โดยไม่ต้องตั้งค่าขอบเขตไอคอนโปร่งใสยังคงใช้พื้นที่ว่าง
Aedis

1
@Aedis: ยังคงแสดงพื้นที่ว่างทางด้านซ้ายของ actionbar ข้อเสนอแนะใด ๆ
โรวันที่

สิ่งนี้ใช้ได้ดีถ้าคุณยังไม่ได้ตั้งโลโก้ ในกรณีของฉันฉันต้องใช้setLogoแทนsetIconวิธีการ ยังคงเป็นเคล็ดลับที่ดีพาฉันไปในเส้นทางที่ถูกต้อง !!
luiscosta

49

สิ่งนี้ใช้ได้สำหรับฉัน

getActionBar().setDisplayShowHomeEnabled(false);

2
สิ่งนี้ทำให้แถบแอ็คชันอยู่ใต้แท็บ / แถบการนำทาง เห็นได้ชัดว่าพฤติกรรมนี้คือ "โดยการออกแบบ" ... code.google.com/p/android/issues/detail?id=36191
Roger Keays

ไม่ได้อยู่ในนี้ตอบคำถาม ฉันรู้เกี่ยวกับคุณสมบัตินี้ แต่ฉันขอ XML!
Hrafn

ดูเหมือนว่ามันควรจะเป็นคำตอบ - ไม่เช่นนั้นคุณจะใช้โซลูชันระดับโลกซึ่งฉันสงสัยว่าเป็นสิ่งที่ทุกคนต้องการ ในกรณีของฉันฉันต้องการแสดงโลโก้ในบางหน้า แต่หน้าอื่น ๆ มันไม่สมเหตุสมผลและทำให้กลุ่มแอ็คชั่นบาร์
DiscDev

28

การเรียกร้อง

mActionBar.setDisplayHomeAsUpEnabled(true);

นอกจาก,

mActionBar.setDisplayShowHomeEnabled(false);

จะซ่อนโลโก้ แต่แสดงไอคอน Home As Up :)


ไม่ได้อยู่ในนี้ตอบคำถาม ฉันรู้เกี่ยวกับคุณสมบัตินี้ แต่ฉันขอ XML!
Hrafn

@Hrafn - ฉันคิดว่า XML เป็นคำตอบที่ต้องการไม่ใช่คำตอบเท่านั้น :( ฉันเดาว่ามันยังคงช่วยเหลือผู้คนอยู่ :)
Atul O Holic

15

ระวังว่า:

<item name="android:icon">@android:color/transparent</item>

จะทำให้รายการตัวเลือกของคุณโปร่งใส


13
    //disable application icon from ActionBar
    getActionBar().setDisplayShowHomeEnabled(false);

    //disable application name from ActionBar
    getActionBar().setDisplayShowTitleEnabled(false);

ไม่ได้อยู่ในนี้ตอบคำถาม ฉันรู้เกี่ยวกับคุณสมบัตินี้ แต่ฉันขอ XML!
Hrafn


11

ลบหรือแสดงชื่อโดยใช้:

getActionBar().setDisplayShowTitleEnabled(true);

ลบหรือแสดงโลโก้โดยใช้:

getActionBar().setDisplayUseLogoEnabled(false);

ลบทั้งหมด:

getActionBar().setDisplayShowHomeEnabled(false);

ไม่ได้อยู่ในนี้ตอบคำถาม ฉันรู้เกี่ยวกับคุณสมบัตินี้ แต่ฉันขอ XML!
Hrafn

9

คุณยังสามารถเพิ่มด้านล่างรหัสในAndroidManifest.xml

android:icon="@android:color/transparent"

มันจะทำงานได้ดี

แต่ฉันพบว่าสิ่งนี้ทำให้เกิดปัญหาเนื่องจากไอคอนตัวเรียกใช้ยังโปร่งใส

ดังนั้นฉันจึงใช้:

getActionBar().setIcon(new ColorDrawable(getResources().getColor(android.R.color.transparent)));

และมันก็ใช้ได้ดี

แต่ถ้าคุณมีมากกว่าหนึ่งกิจกรรมและต้องการทำให้ไอคอนในกิจกรรมโปร่งใสวิธีการก่อนหน้านี้จะใช้งานได้


2

ฉันใช้มันและมันก็ได้ผลกับฉัน

        getActionBar().setIcon(
        new ColorDrawable(getResources().getColor(android.R.color.transparent)));

ไม่ได้อยู่ในนี้ตอบคำถาม ฉันรู้เกี่ยวกับคุณสมบัตินี้ แต่ฉันขอ XML!
Hrafn

2
getActionBar().setIcon(new ColorDrawable(getResources().getColor(android.R.color.transparent)));
getActionBar().setDisplayHomeAsUpEnabled(true);

ยินดีต้อนรับสู่ Stack ล้น! โดยปกติคำตอบที่คล้ายกับของคุณจะถือว่ามีคุณภาพค่อนข้างต่ำ สำหรับการอ้างอิงในอนาคตคุณควรพิจารณาเพิ่มคำอธิบายเกี่ยวกับรหัสที่คุณให้ไว้และคุณควรจัดโครงสร้างรหัสให้ดีขึ้น (เพิ่ม 4 ช่องว่างที่จุดเริ่มต้นของแต่ละบรรทัดหรือเลือกทั้งหมดแล้วคลิกสัญลักษณ์ {} ด้านบนกล่องข้อความ) คุณควรให้ความสำคัญกับวันที่ของคำถาม (มากกว่าหนึ่งปีที่ผ่านมา) และความจริงที่ว่าคำตอบนั้นได้รับแล้ว (เครื่องหมายตรวจสอบสีเขียว) ขอให้โชคดีในการเขียนโปรแกรมของคุณ :)
Hristo Valkanov

ไม่ได้อยู่ในนี้ตอบคำถาม ฉันรู้เกี่ยวกับคุณสมบัตินี้ แต่ฉันขอ XML!
Hrafn

1

ฉันคิดว่าคำตอบที่แน่นอนคือ: สำหรับ API 11 หรือสูงกว่า:

getActionBar().setDisplayShowHomeEnabled(false);

มิฉะนั้น:

getSupportActionBar().setDisplayShowHomeEnabled(false);

(เพราะมันต้องการห้องสมุดสนับสนุน)


ไม่ได้อยู่ในนี้ตอบคำถาม ฉันรู้เกี่ยวกับคุณสมบัตินี้ แต่ฉันขอ XML!
Hrafn

1

ไปที่รายการของคุณเพื่อค้นหาแท็กแอปพลิเคชัน

  android:icon="@android:color/transparent"// simply add this on place of your icon

........ ...


0

คำตอบของ Qiqi Abaziz ก็โอเค แต่ฉันก็ยังต้องดิ้นรนเป็นเวลานานเพื่อให้สามารถใช้งานได้กับแพ็คที่เข้ากันได้และใช้สไตล์กับองค์ประกอบที่ถูกต้อง นอกจากนี้ความโปร่งใสแฮ็คก็ไม่จำเป็น ดังนั้นนี่คือตัวอย่างที่สมบูรณ์สำหรับ v8 ขึ้นไป:

ค่า \ styles.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="MyActivityTheme" parent="@style/Theme.AppCompat">
        <item name="actionBarStyle">@style/NoLogoActionBar</item> <!-- pre-v11-compatibility -->
        <item name="android:actionBarStyle">@style/NoLogoActionBar</item>
    </style>
    <style name="NoLogoActionBar" parent="@style/Widget.AppCompat.ActionBar">
        <item name="displayOptions">showHome</item> <!-- pre-v11-compatibility -->
        <item name="android:displayOptions">showHome</item>
    </style>
</resources>

AndroidManifest.xml (เปลือก)

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android">   
    <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="19"/>
    <application android:theme="@android:style/Theme.Light.NoTitleBar">
        <activity android:theme="@style/PentActivityTheme"/>
    </application>
</manifest>

0

เข้าไปในรายการของคุณและค้นหากิจกรรมของคุณแล้วเพิ่มรหัสนี้:

android:theme="@android:style/Theme.NoTitleBar"

Actionbarสายซ่อนข้างต้นของคุณ

หากคุณต้องการคุณสมบัติอื่น ๆ คุณสามารถดูตัวเลือกอื่น ๆ ด้วย (CLR + SPC)


0

วิธีที่เร็วที่สุดคือการแก้ไข Manifest.xml ของคุณ ตัวอย่างเช่นหากคุณต้องการลบโลโก้ของกิจกรรม "กิจกรรม" และปล่อยโลโก้ไว้ในกิจกรรมอื่น ๆ คุณสามารถทำสิ่งต่อไปนี้:

<activity
      android:name=".home.XActivity"
      android:logo="@android:color/transparent"
      android:configChanges="orientation|keyboardHidden" />
 <activity
      android:name=".home.HomeActivity"
      android:configChanges="orientation|keyboardHidden" />

0

ไม่มีการทำงานใด ๆ ข้างต้น

แต่นี่เป็นการหลอกลวง:

override fun onCreate() {
    setContentView(R.layout.activity_main)

    setSupportActionBar(toolbar)
    toolbar.logo = null

(ไอคอนถูกลบออกจากแถบเครื่องมือ)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.