我尝试了这些方法-但仍然看不到之前的图标:
getSupportActionBar().setLogo(R.drawable.ic_launcher);
getSupportActionBar().setDisplayUseLogoEnabled(true);
getSupportActionBar().setIcon(R.drawable.ic_launcher);
当我使用自定义工具栏时似乎可以工作 - 但这将强制我触及所有的布局 - 有没有更好的方法来实现呢?
我尝试了这些方法-但仍然看不到之前的图标:
getSupportActionBar().setLogo(R.drawable.ic_launcher);
getSupportActionBar().setDisplayUseLogoEnabled(true);
getSupportActionBar().setIcon(R.drawable.ic_launcher);
当我使用自定义工具栏时似乎可以工作 - 但这将强制我触及所有的布局 - 有没有更好的方法来实现呢?
getSupportActionBar().setDisplayShowHomeEnabled(true);
随着
getSupportActionBar().setIcon(R.drawable.ic_launcher);
getSupportActionBar()
可能会为 null
。 - jlhonora.setHomeAsUpIndicator
并在onOptionsItemSelected
中处理它。 - Joshua Pinter在现代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);
}
最简单的方法是:只需添加:
app:navigationIcon="@drawable/ic_action_navigation_menu">
到 <android.support.v7.widget.Toolbar
标签处
其中 @drawable/ic_action_navigation_menu
是图标的名称
onOptionsItemSelected(...)
中检查android.R.id.home
ID。 - Sazid这个对我起作用:
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
一种更好的设置多个选项的方式:
如果您已经设置了 DisplayOptions ,那么 setIcon / setLogo
方法才能起作用。请尝试以下方法:
actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_HOME | ActionBar.DISPLAY_SHOW_TITLE);
actionBar.setIcon(R.drawable.ic_launcher);
您也可以设置显示LOGO的选项(只需添加常数 ActionBar.DISPLAY_USE_LOGO
)。更多信息请参见displayOptions。
对于Actionbar:
getActionBar().setDisplayHomeAsUpEnabled(true);
getActionBar().setHomeAsUpIndicator(R.drawable.ic_action_back);
对于工具栏:
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_action_back);
setIcon
不允许创建可点击的按钮,而使用 setHomeAsUpIndicator
并在 onOptionsItemSelected
中处理可以完美解决问题。谢谢! - Joshua Pinter尝试使用以下方法:
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) );
.xml
)也可以正常工作,例如 R.mipmap.ic_launcher
或 R.mipmap.ic_launcher_round
。 - user924getSupportActionBar().setDisplayShowHomeEnabled(true);
getSupportActionBar().setIcon(R.drawable.ic_launcher);
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" />