在AppCompat-v7中的操作栏/工具栏中显示图标21

我尝试了这些 – 但仍然没有像之前看到的图标:

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

这似乎工作时,我使用自定义工具栏 – 但这会迫使我触摸所有布局 – 有没有更好的方式来做到这一点?

getSupportActionBar().setDisplayShowHomeEnabled(true);

随着

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

在现代的Android用户界面中,开发人员应该更多地依赖工具栏视觉上不同的颜色scheme,而不是应用程序图标。 应用程序图标加标题作为标准布局的使用在API 21设备和更新版本上是不鼓励的。

如果你不同意你可以试试:

用XML创build工具栏:

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

现在在你主要活动中join这一行

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

为静态图标

对于Actionbar:

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

如果您不想使用setSupportActionBar将工具栏设置为操作栏,则可以在导航图标旁边添加一个徽标(例如,如果您有后退button),如下所示:

 toolbar.setLogo(); 

或者在xml中

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

即使您在工具栏上设置了标题,标题仍会显示。

例如:下图中的绿色检查是徽标

带有导航图标,徽标和标题的工具栏

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