AppCompat-v7 21 ile eylem çubuğunda / araç çubuğunda simgeyi göster


130

Bunları denedim ama simgeyi hâlâ eskisi gibi görmüyorum:

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

Özel araç çubuğunu kullandığımda çalışıyor gibi görünüyor - ama bu beni tüm düzenlere dokunmaya zorlar - bunu yapmanın daha iyi bir yolu var mı?


1
Eylem çubuğu şeyler eklediğiniz aktivite sınıfınızı ekleyebilirsiniz?
Harsha Vardhan

Yanıtlar:


256
getSupportActionBar().setDisplayShowHomeEnabled(true);

ile birlikte

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

7
Bunun aktivitenizin tarzına bağlı getSupportActionBar()olabileceğine dikkat edin null.
jlhonora

2
hala simge göstermiyor. getSupportActionBar (). setDisplayHomeAsUpEnabled (true) kullandım; . getSupportActionBar () setIcon (R.drawable.ic_app_icon); . getSupportActionBar () setTitle ( "Etiket");
Meenaxi

8
Simge neden Başlık çubuğunun ortasında görünüyor? Simge'nin Başlık çubuğunun sol tarafında olmasını istiyorum. Lütfen yardım edin .. Teşekkürler
Mohammad Rajob

1
@Meenaxi setDisplayShowHomeEnabled (true) kullanmalısınız; Bu benim için hile yaptı
arniotaki

1
Simgeyi ayarlamanın onu tıklanabilir hale getirmediğini unutmayın. Tıklanabilir bir simge arıyorsanız, .setHomeAsUpIndicatoronu onOptionsItemSelected.
Joshua Pinter

32

Modern Android kullanıcı arayüzlerinde geliştiriciler, uygulama simgelerine göre araç çubukları için görsel olarak farklı bir renk düzenine daha fazla dayanmalıdır. Uygulama simgesi ve başlığının standart bir düzen olarak kullanılması, API 21 ve daha yeni cihazlarda önerilmez.

Eğer katılmıyorsanız şunları deneyebilirsiniz:

Araç çubuğunu XML'de oluşturmak için:

<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" />

Aktivitenizde:

@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);
}

Simgeyi ayarlamak için setLogo () yöntemini kullanın. Kod kaynağı.


1
Şu anda Play Store SettingsEtkinliğinde işlem çubuğunda uygulama simgesi bulunduğunu belirtmek isterim . Bu, Materyal güncellemesinden sonra hala orada.
Austyn Mahoney

17

Bu benim için çalıştı:

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

Hem de:

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

birçok gereksiz yöntem var ve simgeyle ilgili değil
user924

15

yapılacak en basit şey; sadece ekle:

app:navigationIcon="@drawable/ic_action_navigation_menu">

için <android.support.v7.widget.Toolbaretiketi

@drawable/ic_action_navigation_menuikonun adı nerede


1
Mükemmel çalışıyor! Bu, araç çubuğuna gezinme simgesini eklemenin doğru ve en basit yoludur. Gezinme simgesi tıklamalarını kontrol etmek istiyorsanız, android.R.id.homekimliğinizi kontrol edebilirsiniz onOptionsItemSelected(...).
Sazid

12

Birden çok seçeneği belirlemenin daha iyi bir yolu:

setIcon/setLogoyöntem yalnızca DisplayOptions'ı ayarladıysanız işe yarar Bunu deneyin -

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

LOGO'yu görüntülemek için seçenekleri de ayarlayabilirsiniz (sadece sabit ekleyin ActionBar.DISPLAY_USE_LOGO). Daha fazla bilgi - displayOptions


6

Şunları kullanmayı deneyin:

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

5
umut verici görünüyordu - ama hala Simge yok :-(
ligi

6

Actionbar için:

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

Araç Çubuğu için:

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

5
ActionBar ve Araç Çubuğu için 2 kod arasında bir fark yoktur, bu bilinçli mi?
King King

1
ActionBar için şöyle olmalıdır: getActionBar (). SetDisplayHomeAsUpEnabled (true); . getActionBar () setHomeAsUpIndicator (R.drawable.ic_action_back);
Darsshan

Bu aslında gidilecek yol. Sadece kullanmak setIcon, tıklanabilir bir düğmeye izin vermez, burada olduğu gibi setHomeAsUpIndicatorve bunun işlenmesi onOptionsItemSelectedbir zevktir. Teşekkürler!
Joshua Pinter

5

ev veya geri simgesini (logo veya statik simge değil) ayarlamak istiyorsanız

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

bu doğru cevap, çünkü görünümü ve davranışı dağıtın
cutiko

sadece bu bana normal bir görünüm verdi (boyut, kenar boşlukları, başlık ve simge arasındaki kayma), vektör başlatıcısı ( .xml) gibi R.mipmap.ic_launcherveyaR.mipmap.ic_launcher_round
user924

ve bunu logo / statik simge olarak kullandım çünkü diğer çözümler çirkin çalışıyor
user924

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

VEYA XML düzenini çağırıntool_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>

Şimdi ana aktivitenize bu satırı ekleyin

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

3

Araç çubuğunuzu setSupportActionBar kullanarak eylem çubuğu olarak ayarlamak istemiyorsanız , gezinme simgenizin yanına (örneğin bir geri düğmeniz varsa) aşağıdaki gibi bir logo ekleyebilirsiniz:

toolbar.setLogo();

veya xml olarak

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

Ve Araç Çubuğunda ayarlanmış bir başlığınız olsa bile, başlık yine de gösterilecektir.

Ör: Aşağıdaki resimde bulunan yeşil onay logodur

Navigasyon simgesi, logosu ve başlığı olan araç çubuğu


2

Bunu dene:

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);

statik simge için


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

Xamarin.Android'de şunları kullanabilirsiniz:

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

Android.Support.V7.App.AppCompatActivity kullanmak gereklidir.


0

Bunu dene. Benim için çalıştı

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

0

Kotlin'de sadece simgeyi göstermek için şunları yaptım:

supportActionBar?.setDisplayShowHomeEnabled(true)
supportActionBar?.setIcon(R.drawable.ic_icon_small)
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.