使用 AppCompat-v721在 actionbar/toolbar 中显示图标

我试过这些——但仍然没有看到像以前那样的图标:

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

它似乎工作时,我使用自定义工具栏-但这将迫使我触摸所有布局-有没有更好的方法这样做?

164921 次浏览

尝试使用:

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

在现代的 Android 用户界面中,开发人员应该更多地依赖于一个可视化的 工具栏的颜色方案比应用程序图标的颜色方案明显 不鼓励使用应用程序图标加标题作为标准布局 在 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().setDisplayShowHomeEnabled(true);

还有

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

这对我很有效:

    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方法只有在你设置了 显示选项的情况下才能工作

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

您还可以设置显示 LOGO 的选项(只需添加常量 ActionBar.DISPLAY_USE_LOGO)。更多信息 -显示选项

如果你想设置的主页或回图标(不是标志或静态图标) ,以便您可以使用

 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>

现在在你的主要活动中添加这一行

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

静态图标

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

最简单的事情; 只要加上:

app:navigationIcon="@drawable/ic_action_navigation_menu">

<android.support.v7.widget.Toolbar标签

其中 @drawable/ic_action_navigation_menu是图标的名称

行动条:

getActionBar().setDisplayHomeAsUpEnabled(true);
getActionBar().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将你的工具栏设置为操作栏,你可以在你的导航图标旁边添加一个徽标(如果你有一个后退按钮) ,如下所示:

toolbar.setLogo();

或 xml 格式

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

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

例句: 下面图片中的绿色格子是商标

Toolbar with navigation icon, logo and title

在 Kotlin,我只是展示了这个图标:

supportActionBar?.setDisplayShowHomeEnabled(true)
supportActionBar?.setIcon(R.drawable.ic_icon_small)