Hapus ikon / logo dari panel tindakan di android

146

Saya telah berusaha menemukan beberapa cara untuk menghapus ikon / logo dari bilah tindakan tetapi satu-satunya hal yang saya temukan setelah satu jam mencari SO, dokumentasi Android dan Google adalah cara menghapus bilah judul secara keseluruhan. Bukan itu yang saya inginkan. Hanya ingin menghapus ikon / logo dari bilah judul.

Adakah yang tahu bagaimana mencapainya? Lebih disukai saya ingin melakukan ini dalam XML .

Hrafn
sumber
1
Anda bisa membaca panduan API di actionbar. Dikatakan tepat di panduan.
Mgamerz
6
Setiap informasi dapat ditemukan di suatu tempat.
Hrafn
dapatkah Anda menunjukkan kepada kami apa yang telah Anda coba? apa yang Anda temukan sebelumnya yang tidak berfungsi?
DForck42
@ DForck42 Pertanyaan ini benar-benar tidak relevan lagi (hampir 4 tahun). Anda dapat menemukan banyak cara untuk mencapai ini dalam jawaban di bawah ini.
Hrafn

Jawaban:

58

Jika Anda telah didefinisikan android:logo="..."dalam <application>tag dari Anda AndroidManifest.xml, maka Anda perlu menggunakan hal ini untuk menyembunyikan ikon:

tema pra-v11

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

v11 dan lebih tinggi tema

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

Penggunaan kedua gaya ini telah menyembunyikan ikon bilah tindakan dengan benar pada perangkat 2.3 dan 4.4 bagi saya (aplikasi ini menggunakan AppCompat ).

Charles Madere
sumber
Ini berfungsi, tetapi dalam kasus saya, ketika saya memiliki tampilan pencarian dan mengekliknya / mengembangkannya, ikon / logo aplikasi saya muncul kembali. Ada ide?
acrespo
@ acrespo hmm Saya tahu apa yang Anda bicarakan tetapi saya belum menyelidiki solusi untuk itu, maaf.
Charles Madere
1
Apa yang saya akhirnya melakukan adalah pengaturan <application (...) android:logo="@android:color/transparent"> (...)di saya AndroidManifest.xmldan memaksa useLogountuk displayOptionsgaya saya seperti ini <item name="android:displayOptions">showHome|useLogo|homeAsUp|showTitle</item> <item name="displayOptions">showHome|useLogo|homeAsUp|showTitle</item>. Bagian terakhir ini penting karena di beberapa perangkat (saya pikir sebagian besar pasca-lolipop) pencarian terkutuk mengambil appIcon dan meletakkannya di tempat logo, bahkan jika logo ditetapkan sebagai transparan: s
acrespo
228

Tambahkan kode berikut dalam gaya bilah tindakan Anda:

<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: Saya menggunakan Actionbar Sherlock dan ini berfungsi dengan baik.

Qiqi Abaziz
sumber
2
Trik yang cukup bagus, terima kasih! Bahkan berhenti mengambil ruang di action bar!
Igor Čordaš
6
Terima kasih .. itu bekerja dalam kode juga ... actionBar.setIcon (android.R.color.transparent);
Jagdeep Singh
1
Jawaban luar biasa ... :)
Bytecode
24
Beberapa perangkat Samsung ditampilkan @android:color/transparentsebagai HITAM. Tampaknya gila, tetapi banyak produsen perangkat mengabaikan pengaturan default Android; termasuk warna. Karena itu, saya akan membuat warna dalam colors.xml seperti ini: <color name="transparent">#00000000</color>dan referensi itu daripada mendapatkan nilai dari Android.
Matt W
1
@jose_GD: android: displayOptions hanya v11 dan yang lebih baru, jadi Anda harus kompatibel dengan keduanya.
Nilzor
115

Jika Anda tidak ingin ikon dalam aktivitas tertentu.

getActionBar().setIcon(
   new ColorDrawable(getResources().getColor(android.R.color.transparent)));    
Laksh
sumber
45
getActionBar (). setIcon (android.R.color.transparent); tampaknya sudah cukup
Boy
metode panggilan getActionBar () .... adalah solusi yang lebih baik untuk masalah ini (hapus ikon dari bilah tindakan) karena jika Anda menggunakan bilah navigasi dan bilah tindakan, maka bilah tindakan Anda akan berada di atas bilah navigasi. Jika Anda menggunakan setDisplayShowHomeEnabled (false) maka bilah navigasi akan lebih dari bilah tindakan dan Anda tidak menginginkan ini.
horkavlna
Saya akan mengubah ini menjadi: ColorDrawable cd = new ColorDrawable(getResources().getColor(android.R.color.transparent)); cd.setBounds(0,0,0,0); getActionBar().setIcon(cd); Tanpa mengatur batas, ikon transparan masih menggunakan ruang
Aedis
1
@Aedis: masih menampilkan ruang kosong di sebelah kiri bilah tindakan. ada saran?
Rowan
Ini berfungsi dengan baik jika Anda belum menetapkan logo. Dalam kasus saya, saya harus menggunakan setLogobukan setIconmetode. Tetap, tip yang bagus, membuat saya di jalan yang benar !!
luiscosta
49

Ini berhasil untuk saya

getActionBar().setDisplayShowHomeEnabled(false);
Brune
sumber
2
Ini menempatkan bilah tindakan di bawah tab / bilah navigasi. Tampaknya perilaku ini "sesuai desain" ... code.google.com/p/android/issues/detail?id=36191
Roger Keays
Lagi pula tidak apakah ini menjawab pertanyaan. Saya tahu tentang fitur ini, tetapi saya meminta XML!
Hrafn
Sepertinya ini adalah jawabannya - jika tidak, Anda menerapkan solusi global, yang saya ragu adalah apa yang semua orang inginkan. Dalam kasus saya, saya ingin menampilkan logo pada beberapa halaman, tetapi halaman lain tidak masuk akal dan mengacaukan panel tindakan.
DiscDev
28

Panggilan

mActionBar.setDisplayHomeAsUpEnabled(true);

sebagai tambahannya,

mActionBar.setDisplayShowHomeEnabled(false);

akan menyembunyikan logo tetapi menampilkan ikon Home As Up. :)

Atul O Holic
sumber
Lagi pula tidak apakah ini menjawab pertanyaan. Saya tahu tentang fitur ini, tetapi saya meminta XML!
Hrafn
@ Hrafn - Saya pikir XML adalah jawaban yang disukai bukan jawaban HANYA. :( Saya rasa ini masih membantu orang. :)
Atul O Holic
15

Ketahuilah bahwa:

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

Juga akan membuat item opsi Anda transparan.

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

    //disable application name from ActionBar
    getActionBar().setDisplayShowTitleEnabled(false);
Pawel Miechowiecki
sumber
Lagi pula tidak apakah ini menjawab pertanyaan. Saya tahu tentang fitur ini, tetapi saya meminta XML!
Hrafn
12
getActionBar().setIcon(android.R.color.transparent);

Ini berhasil untuk saya.

dn_c
sumber
11

Hapus atau tampilkan judul menggunakan:

getActionBar().setDisplayShowTitleEnabled(true);

Hapus atau tampilkan logo menggunakan:

getActionBar().setDisplayUseLogoEnabled(false);

Menghapus semua:

getActionBar().setDisplayShowHomeEnabled(false);
Tiago Gouvêa
sumber
Lagi pula tidak apakah ini menjawab pertanyaan. Saya tahu tentang fitur ini, tetapi saya meminta XML!
Hrafn
9

Anda juga dapat menambahkan kode di bawah ini di AndroidManifest.xml .

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

Ini akan bekerja dengan baik.

Tetapi saya menemukan bahwa ini memberikan masalah karena ikon peluncur juga menjadi transparan.

Jadi saya menggunakan:

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

dan itu bekerja dengan baik.

Tetapi jika Anda memiliki lebih dari satu kegiatan dan ingin membuat ikon pada suatu kegiatan transparan maka pendekatan sebelumnya akan berhasil.

Sam
sumber
2

Saya menggunakan ini dan itu berhasil untuk saya.

        getActionBar().setIcon(
        new ColorDrawable(getResources().getColor(android.R.color.transparent)));
pengguna2900761
sumber
Lagi pula tidak apakah ini menjawab pertanyaan. Saya tahu tentang fitur ini, tetapi saya meminta XML!
Hrafn
2
getActionBar().setIcon(new ColorDrawable(getResources().getColor(android.R.color.transparent)));
getActionBar().setDisplayHomeAsUpEnabled(true);
pengguna3748515
sumber
Selamat Datang di Stack overflow! Biasanya jawaban yang mirip dengan Anda dianggap berkualitas agak rendah. Untuk referensi di masa mendatang, Anda harus mempertimbangkan untuk menambahkan beberapa penjelasan tentang kode yang Anda berikan dan Anda harus menyusun kode dengan lebih baik (tambahkan 4 spasi di awal setiap baris, atau pilih semuanya dan klik simbol {} di atas kotak teks.) Juga, Anda harus lebih memperhatikan tanggal pertanyaan (lebih dari setahun yang lalu) dan fakta bahwa itu sudah dijawab (tanda centang hijau). Selamat mencoba pemrograman Anda :)
Hristo Valkanov
Lagi pula tidak apakah ini menjawab pertanyaan. Saya tahu tentang fitur ini, tetapi saya meminta XML!
Hrafn
1

Saya pikir jawabannya adalah: untuk api 11 atau lebih tinggi:

getActionBar().setDisplayShowHomeEnabled(false);

jika tidak:

getSupportActionBar().setDisplayShowHomeEnabled(false);

(karena butuh pustaka pendukung.)

David
sumber
Lagi pula tidak apakah ini menjawab pertanyaan. Saya tahu tentang fitur ini, tetapi saya meminta XML!
Hrafn
1

buka manifes Anda dan temukan tag aplikasi

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

..... ... ...

Avinash Ajay Pandey
sumber
0

Jawaban Qiqi Abaziz baik-baik saja, tetapi saya masih berjuang untuk waktu yang lama untuk membuatnya bekerja dengan paket kompatibilitas dan untuk menerapkan gaya ke elemen yang benar. Juga, peretasan transparansi tidak perlu. Jadi di sini adalah contoh lengkap yang berfungsi untuk v8 dan yang lebih tinggi:

values ​​\ 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 (shell)

<?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>
Nilzor
sumber
0

Buka manifes Anda dan temukan aktivitas Anda lalu tambahkan kode ini:

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

di atas baris sembunyikan Actionbar.

Jika Anda perlu fitur lain, Anda dapat melihat opsi lain dengan (CLR + SPC).

A A
sumber
0

Cara tercepat adalah dengan memodifikasi Manifest.xml Anda. Jika misalnya Anda ingin menghapus logo aktivitas "Activity", dan meninggalkan logo di aktivitas lain, Anda dapat melakukan hal berikut:

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

Tidak satu pun di atas yang berfungsi.

Tapi ini berhasil:

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

    setSupportActionBar(toolbar)
    toolbar.logo = null

(ikon dihapus dari toolbar)

Dan Alboteanu
sumber