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

时间:2014-10-18 13:31:15

标签: android android-appcompat

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

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

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

15 个答案:

答案 0 :(得分:251)

getSupportActionBar().setDisplayShowHomeEnabled(true);

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

答案 1 :(得分: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" />

在您的活动中:

@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()方法设置图标。 Code source.

答案 2 :(得分:14)

这对我有用:

    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

答案 3 :(得分:14)

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

app:navigationIcon="@drawable/ic_action_navigation_menu">

<android.support.v7.widget.Toolbar代码

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

答案 4 :(得分:12)

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

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

答案 5 :(得分:6)

尝试使用:

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

答案 6 :(得分:5)

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

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

答案 7 :(得分:4)

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

OR 使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" />

答案 8 :(得分:3)

对于Actionbar:

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

对于工具栏:

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

答案 9 :(得分:2)

试试这个:

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

表示静态图标

答案 10 :(得分:1)

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

答案 11 :(得分:1)

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

toolbar.setLogo();

或在xml中

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

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

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

Toolbar with navigation icon, logo and title

答案 12 :(得分:0)

在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。

答案 13 :(得分:0)

试试这个。对我而言,它起作用了

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

答案 14 :(得分:0)

在Kotlin,我做了以下工作,只显示图标:

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