【问题标题】:Change ToolBar default icon on the left更改左侧工具栏默认图标
【发布时间】:2015-12-15 15:10:10
【问题描述】:

我目前正在使用顶部的工具栏,并想用主页按钮替换默认的后退按钮。但是当我添加项目时,它总是添加到右边。我也没有看到任何 layout_gravity 选项可供选择。有没有办法做到这一点?

主活动

Toolbar toolbar;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_add_delete);

    toolbar = (Toolbar)findViewById(R.id.app_bar);
    setSupportActionBar(toolbar);
    getSupportActionBar().setTitle("                Testing");
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.home_icon_empty, menu);
    return true;
}

home_icon_empty.xml

<item
    android:id="@+id/homepage"
    android:orderInCategory="100"
    android:title="HOME"
    android:icon="@drawable/home_icon"
    app:showAsAction="always"
    />

<item
    android:id="@+id/homepage1"
    android:orderInCategory="200"
    android:title="HOME"
    android:icon="@drawable/home_icon"
    app:showAsAction="always"
    />

activity_main.xml

<include
        android:id="@+id/app_bar"
        layout="@layout/app_bar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

app_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"
    android:background="@color/colorPrimary">

</android.support.v7.widget.Toolbar>

当前工具栏输出:

预期的工具栏输出:

新编辑后的图像:

【问题讨论】:

    标签: java android xml android-toolbar


    【解决方案1】:

    设置为 NavigationIcon:

    Drawable drawable = ContextCompat.getDrawable(context, R.drawable.your_drawable)
    toolbar.setNavigationIcon(drawable);
    setSupportActionBar(toolbar);
    

    【讨论】:

    • 它可以工作,但图像大小没有正确调整大小,这与我添加项目时不同。无论如何围绕这个?添加图片以供参考。
    • 这是因为您的可绘制对象的分辨率(大小)低于您的预期。材质中的菜单项建议为 24dp。您可以通过编程方式调整它的大小,或者简单地将一些 ImageView 放在 XML 中的 &lt;Toolbar&gt;
    • 我看到了你的图片。您的图标对于分辨率来说太大了。您需要创建一个较小尺寸的图标。你可以使用这个工具来做到这一点:romannurik.github.io/AndroidAssetStudio/icons-actionbar.html
    • 链接有帮助吗?创建一个新的操作栏图标并替换,它应该可以工作
    • 所以我应该将其调整为 48dp x 48dp?
    【解决方案2】:

    试试这个

    toolbar.setNavigationIcon(R.drawable.your_icon);
    

    在设置支持操作栏之前使用它。 不要这样称呼它

    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    

    或者至少这样做

    getSupportActionBar().setDisplayHomeAsUpEnabled(false);
    

    试试看。其中一些会起作用。

    【讨论】:

    • 它可以工作,但图像大小没有正确调整大小,这与我添加项目时不同。无论如何围绕这个?添加图片以供参考。
    【解决方案3】:

    根据Material design guide添加您的可绘制资产并在活动onCreate中调用以下方法

    private void setUpToolBar() {
                setSupportActionBar(toolbar);
                //Set Home screen icon
                getSupportActionBar().setHomeAsUpIndicator(R.drawable.home_screen_icon);
    
                //Enable Home icon
                getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    
                //Toolbar title
                getSupportActionBar().setTitle(getString(R.string.app_name));
    
               //Set toolbar as action bar
                setSupportActionBar(toolbar);
            }
    

    【讨论】:

      【解决方案4】:

      您还可以:

      mToolbar.setLogo( yourLogoID );
      

      或者你可以:

      mToolbar.setBackground( ContextCompat.getDrawable( yourContext, urBackgroundID );
      

      在哪里

      mToolbar = yourToolbar;
      mToolbar = findViewById(R.id.your_toolbar);
      // or, if your toolbar get setted by a superclass
      mToolbar = (Toolbar) getSupportActionBar();
      

      你的风格应该是:Blablabla.NoActionBar 然后在 xml 布局中包含您的工具栏

      如果您使用 Drawer 在向左滑动或单击主页按钮时显示左侧菜单,那么您应该使用上述方法之一(如果您不想超类所有 DrawerLayout lul)

      bb

      【讨论】: