tampilkan ikon di actionbar / toolbar dengan AppCompat-v7 21


130

Saya mencoba ini - tetapi masih tidak melihat ikon seperti sebelumnya:

getSupportActionBar().setLogo(R.drawable.ic_launcher);
getSupportActionBar().setDisplayUseLogoEnabled(true);
getSupportActionBar().setIcon(R.drawable.ic_launcher);

Tampaknya berfungsi ketika saya menggunakan bilah alat khusus - tetapi itu akan memaksa saya untuk menyentuh semua tata letak - apakah ada cara yang lebih baik untuk melakukannya?


1
Anda dapat menambahkan kelas aktivitas Anda, di mana Anda telah menambahkan item bilah tindakan?
Harsha Vardhan

Jawaban:


256
getSupportActionBar().setDisplayShowHomeEnabled(true);

bersama

getSupportActionBar().setIcon(R.drawable.ic_launcher);

7
Hati-hati bahwa getSupportActionBar()bisa nulltergantung pada gaya aktivitas Anda.
jlhonora

2
masih tidak menampilkan ikonnya. saya menggunakan getSupportActionBar (). setDisplayHomeAsUpEnabled (true); getSupportActionBar (). setIcon (R.drawable.ic_app_icon); getSupportActionBar (). setTitle ("Label");
Meenaxi

8
Mengapa Ikon ditampilkan di tengah bilah Judul? Saya ingin Ikon sisi kiri bilah Judul. Tolong bantu .. Terima kasih
Mohammad Rajob

1
@ Meenaxi Anda harus menggunakan setDisplayShowHomeEnabled (true); Yang itu melakukan trik untuk saya
arniotaki

1
Perhatikan bahwa pengaturan ikon tidak membuatnya dapat diklik. Jika Anda mencari ikon yang dapat diklik, Anda perlu menggunakan .setHomeAsUpIndicatordan menanganinya di onOptionsItemSelected.
Joshua Pinter

32

Di UI Android modern, pengembang harus lebih bersandar pada skema warna yang berbeda secara visual untuk bilah alat daripada pada ikon aplikasi mereka. Penggunaan ikon aplikasi plus judul sebagai tata letak standar tidak disarankan pada perangkat API 21 dan yang lebih baru.

Jika Anda tidak setuju, Anda dapat mencoba:

Untuk membuat bilah alat di XML:

<android.support.v7.widget.Toolbar  
    android:id="@+id/my_awesome_toolbar"
    android:layout_height="wrap_content"
    android:layout_width="match_parent"
    android:minHeight="?attr/actionBarSize"
    android:background="?attr/colorPrimary" />

Dalam aktivitas Anda:

@Override
public void onCreate(Bundle savedInstanceState) {  
    super.onCreate(savedInstanceState);
    setContentView(R.layout.my_layout);

    Toolbar toolbar = (Toolbar) findViewById(R.id.my_awesome_toolbar);
    setSupportActionBar(toolbar);
}

Gunakan metode setLogo () untuk mengatur ikon. Sumber kode


1
Saya hanya ingin menunjukkan bahwa saat ini SettingsAktivitas Play Store memiliki ikon aplikasi di bilah tindakan. Ini masih ada setelah pembaruan Material.
Austyn Mahoney

17

Ini bekerja untuk saya:

    getSupportActionBar().setHomeButtonEnabled(true);
    getSupportActionBar().setDisplayShowHomeEnabled(true);
    getSupportActionBar().setDisplayUseLogoEnabled(true);
    getSupportActionBar().setLogo(R.drawable.ic_logo);
    getSupportActionBar().setDisplayShowTitleEnabled(false); //optional

sebaik:

    getSupportActionBar().setHomeButtonEnabled(true);
    getSupportActionBar().setDisplayShowHomeEnabled(true);
    getSupportActionBar().setIcon(R.drawable.ic_logo); //also displays wide logo
    getSupportActionBar().setDisplayShowTitleEnabled(false); //optional

ada banyak metode yang tidak perlu dan tidak terkait dengan ikon
user924

15

hal paling sederhana untuk dilakukan; tambahkan saja:

app:navigationIcon="@drawable/ic_action_navigation_menu">

ke <android.support.v7.widget.Toolbartag

dimana @drawable/ic_action_navigation_menunama ikonnya


1
Bekerja dengan sempurna! Ini adalah cara yang benar dan paling sederhana untuk menambahkan ikon navigasi di bilah alat. Jika Anda ingin memeriksa klik ikon navigasi, Anda dapat memeriksa android.R.id.homeID di onOptionsItemSelected(...).
Sazid

12

Cara yang lebih baik untuk mengatur beberapa opsi:

setIcon/setLogoMetode hanya akan berfungsi jika Anda telah mengatur DisplayOptions Coba ini -

actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_HOME | ActionBar.DISPLAY_SHOW_TITLE);
actionBar.setIcon(R.drawable.ic_launcher);

Anda juga dapat mengatur opsi untuk menampilkan LOGO (cukup tambahkan konstan ActionBar.DISPLAY_USE_LOGO). Informasi lebih lanjut - DisplayOptions


6

Coba gunakan:

ActionBar ab = getSupportActionBar();
ab.setHomeButtonEnabled(true);
ab.setDisplayUseLogoEnabled(true);
ab.setLogo(R.drawable.ic_launcher);

5
terdengar menjanjikan - tapi masih belum ada Ikon :-(
ligi

5

jika Anda ingin mengatur ikon home atau back (bukan logo atau ikon statis) sehingga Anda dapat menggunakannya

 getSupportActionBar().setDisplayHomeAsUpEnabled(true);
 getSupportActionBar().setHomeAsUpIndicator( getResources().getDrawable(R.drawable.home) );

ini adalah jawaban yang benar, karena menyebarkan penampilan dan perilaku
cutiko

hanya ini yang memberi saya tampilan normal (ukuran, margin, offset antara judul dan ikon), berfungsi baik bahkan dengan peluncur vektor ( .xml), seperti R.mipmap.ic_launcheratauR.mipmap.ic_launcher_round
user924

dan saya menggunakan ini sebagai logo / ikon statis menyebabkan solusi lain berfungsi buruk
user924

5

Untuk Actionbar:

getActionBar().setDisplayHomeAsUpEnabled(true);
getActionBar().setHomeAsUpIndicator(R.drawable.ic_action_back);

Untuk Bilah Alat:

getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_action_back);

5
Tidak ada perbedaan antara 2 kode untuk ActionBar dan Toolbar, apakah ini disengaja?
King King

1
Untuk ActionBar harus: getActionBar (). SetDisplayHomeAsUpEnabled (true); getActionBar (). setHomeAsUpIndicator (R.drawable.ic_action_back);
Darsshan

Ini sebenarnya jalan yang harus ditempuh. Hanya menggunakan setIcontidak memungkinkan tombol yang dapat diklik, di mana setHomeAsUpIndicatordan menangani itu dalam onOptionsItemSelectedbekerja memperlakukan. Terima kasih!
Joshua Pinter

4
getSupportActionBar().setDisplayShowHomeEnabled(true);
getSupportActionBar().setIcon(R.drawable.ic_launcher);

ATAU buat panggilan tata letak XMLtool_bar.xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:background="@color/colorPrimary"
    android:theme="@style/ThemeOverlay.AppCompat.Dark"
    android:elevation="4dp">

    <RelativeLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

    <ImageButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@color/colorPrimary"
        android:src="@drawable/ic_action_search"/>

    </RelativeLayout>
</android.support.v7.widget.Toolbar>

Sekarang di aktivitas utama Anda tambahkan baris ini

 <include
     android:id="@+id/tool_bar"
     layout="@layout/tool_bar" />

3

Jika Anda tidak ingin mengatur bilah alat sebagai bilah tindakan menggunakan setSupportActionBar , Anda dapat menambahkan logo di sebelah ikon navigasi Anda (jika Anda memiliki tombol kembali misalnya) seperti ini:

toolbar.setLogo();

atau dalam xml

<android.support.v7.widget.Toolbar 
    ....
    android:logo="@drawable/logo"
    app:logo="@drawable/logo"/>

Dan bahkan jika Anda memiliki judul yang ditetapkan pada Toolbar, judul tersebut akan tetap ditampilkan.

Mis: Tanda centang hijau pada gambar di bawah adalah logo

Bilah alat dengan ikon navigasi, logo, dan judul


2

Coba ini:

import android.support.v7.app.ActionBar;
import android.support.v7.app.AppCompatActivity;
...
    ActionBar actionbar = getSupportActionBar();
    actionbar.setDisplayHomeAsUpEnabled(true);
    actionbar.setHomeAsUpIndicator(R.drawable.ic_launcher);

so your icon will be used for Home / back
or

import android.support.v7.app.ActionBar;
import android.support.v7.app.AppCompatActivity;
...
    ActionBar actionbar = getSupportActionBar();
    actionbar.setDisplayShowHomeEnabled(true);
    actionbar.setIcon(R.drawable.ic_launcher);

untuk ikon statis


1
toolbar.setLogo(resize(logo, (int) Float.parseFloat(mContext.getResources().getDimension(R.dimen._120sdp) + ""), (int) Float.parseFloat(mContext.getResources().getDimension(R.dimen._35sdp) + "")));


public Drawable resize(Drawable image, int width, int height)
{
    Bitmap b = ((BitmapDrawable) image).getBitmap();
    Bitmap bitmapResized = Bitmap.createScaledBitmap(b, width, height, false);
    return new BitmapDrawable(getResources(), bitmapResized);
}

0

Di Xamarin.Android Anda dapat menggunakan ini:

SupportActionBar.SetHomeButtonEnabled(true);
SupportActionBar.SetDisplayShowHomeEnabled(true);
SupportActionBar.SetDisplayUseLogoEnabled(true);
SupportActionBar.SetIcon(Resource.Drawable.ic_launcher);
SupportActionBar.SetDisplayShowTitleEnabled(false);

menggunakan Android.Support.V7.App.AppCompatActivity diperlukan.


0

Coba ini. Bagi saya itu berhasil

getSupportActionBar().setDisplayShowHomeEnabled(true);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setDisplayUseLogoEnabled(true);

0

Di Kotlin saya melakukan yang berikut ini hanya untuk menunjukkan ikon:

supportActionBar?.setDisplayShowHomeEnabled(true)
supportActionBar?.setIcon(R.drawable.ic_icon_small)
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.