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

lig*_*igi 128 android android-appcompat

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

getSupportActionBar().setLogo(R.drawable.ic_launcher);
getSupportActionBar().setDisplayUseLogoEnabled(true);
getSupportActionBar().setIcon(R.drawable.ic_launcher);
Run Code Online (Sandbox Code Playgroud)

当我使用自定义工具栏时似乎工作 - 但这会迫使我触摸所有布局 - 有更好的方法吗?

nad*_*ima 253

getSupportActionBar().setDisplayShowHomeEnabled(true);
Run Code Online (Sandbox Code Playgroud)

随着

getSupportActionBar().setIcon(R.drawable.ic_launcher);
Run Code Online (Sandbox Code Playgroud)

  • 请注意,`getSupportActionBar()`可能是`null`,具体取决于您的活动风格. (7认同)
  • 为什么图标显示在标题栏的中间?我想要标题栏左侧的Icon.请帮忙..谢谢 (7认同)
  • 仍然没有显示图标.我使用了getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar()的setIcon(R.drawable.ic_app_icon).getSupportActionBar()的setTitle( "标签"). (2认同)
  • 请注意,设置图标并不使其可单击。如果您正在寻找可点击的图标,则需要使用`.setHomeAsUpIndicator`并在`onOptionsItemSelected`中处理它。 (2认同)

Lor*_*nMK 32

在现代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" />
Run Code Online (Sandbox Code Playgroud)

在您的活动中:

@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);
}
Run Code Online (Sandbox Code Playgroud)

使用setLogo()方法设置图标. 代码来源.


Mic*_*ł K 14

这对我有用:

    getSupportActionBar().setHomeButtonEnabled(true);
    getSupportActionBar().setDisplayShowHomeEnabled(true);
    getSupportActionBar().setDisplayUseLogoEnabled(true);
    getSupportActionBar().setLogo(R.drawable.ic_logo);
    getSupportActionBar().setDisplayShowTitleEnabled(false); //optional
Run Code Online (Sandbox Code Playgroud)

以及:

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


Pil*_*ila 14

最简单的事情; 只需添加:

app:navigationIcon="@drawable/ic_action_navigation_menu">
Run Code Online (Sandbox Code Playgroud)

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

@drawable/ic_action_navigation_menu图标的名称在哪里


Vin*_*esh 12

设置多个选项的更好方法:

setIcon/setLogo只有设置了DisplayOptions才能使用此方法试试这个 -

actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_HOME | ActionBar.DISPLAY_SHOW_TITLE);
actionBar.setIcon(R.drawable.ic_launcher);
Run Code Online (Sandbox Code Playgroud)

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


Chr*_*nes 6

尝试使用:

ActionBar ab = getSupportActionBar();
ab.setHomeButtonEnabled(true);
ab.setDisplayUseLogoEnabled(true);
ab.setLogo(R.drawable.ic_launcher);
Run Code Online (Sandbox Code Playgroud)

  • 听起来很有希望 - 但仍然没有图标:-( (5认同)

小智 6

对于操作栏:

getActionBar().setDisplayHomeAsUpEnabled(true);
getActionBar().setHomeAsUpIndicator(R.drawable.ic_action_back);
Run Code Online (Sandbox Code Playgroud)

对于工具栏:

getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_action_back);
Run Code Online (Sandbox Code Playgroud)

  • ActionBar 和 Toolbar 的 2 个代码没有区别,这是故意的吗? (5认同)

smo*_*mut 5

如果您想设置主页或后退图标(不是徽标或静态图标),您可以使用

 getSupportActionBar().setDisplayHomeAsUpEnabled(true);
 getSupportActionBar().setHomeAsUpIndicator( getResources().getDrawable(R.drawable.home) );
Run Code Online (Sandbox Code Playgroud)