Показать значок в панели действий / панели инструментов с помощью AppCompat-v7 21

Я попробовал это – но до сих пор не вижу иконку, как раньше:

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

Кажется, он работает, когда я использую пользовательскую панель инструментов, но это заставило бы меня коснуться всех макетов – есть ли лучший способ сделать это?

Solutions Collecting From Web of "Показать значок в панели действий / панели инструментов с помощью AppCompat-v7 21"

getSupportActionBar().setDisplayShowHomeEnabled(true);

вместе с

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

В современных Android UI разработчики должны больше ориентироваться на визуально отличную цветовую схему для панелей инструментов, чем на значок своего приложения. Использование значка приложения плюс заголовок в качестве стандартного макета не рекомендуется на устройствах API 21 и новее.

Если вы не согласны, вы можете попробовать:

Чтобы создать панель инструментов в 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" /> 

В вашей деятельности:

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

Используйте метод setLogo () для установки значка. Источник кода.

Это сработало для меня:

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

так же как:

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

Лучший способ настройки нескольких параметров:

setIcon/setLogo будет работать, только если вы установили DisplayOptions. Попробуйте это –

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

Вы также можете установить параметры для отображения LOGO (просто добавьте константу ActionBar.DISPLAY_USE_LOGO ). Дополнительная информация – displayOptions

Простейшая вещь; просто добавь:

 app:navigationIcon="@drawable/ic_action_navigation_menu"> 

<android.support.v7.widget.Toolbar

Где @drawable/ic_action_navigation_menu – это имя значка

Попробуйте использовать:

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

Если вы хотите установить домашний или задний значок (не логотип или статический значок), чтобы вы могли использовать

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

getSupportActionBar () setDisplayShowHomeEnabled (истина). getSupportActionBar () SetIcon (R.drawable.ic_launcher).

ИЛИ

Сделать XML-макет вызовите tool_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> 

Теперь в вашей основной деятельности добавьте эту строку

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

Попробуй это:

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

Для статического значка

Для панели действий:

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

Для панели инструментов:

 getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_action_back); 
 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); } 

В Xamarin.Android вы можете использовать их:

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

Используя Android.Support.V7.App.AppCompatActivity не требуется.

Попробуй это. Для меня это сработало

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