如何在不拉伸图像的情况下设置 BackgroundDrawable

How to setBackgroundDrawable without stretching an image

在我的 Android 应用程序中,我正在使用 android.support.v7.widget.Toolbar 并在 MainActivity 中设置操作栏的背景图片:

// Custom Action Bar
if(getSupportActionBar() != null){
    getSupportActionBar().setDisplayShowTitleEnabled(false);
    getSupportActionBar().setBackgroundDrawable(getResources().getDrawable(R.drawable.ic_tug));
}

问题是图标拉伸到操作栏的宽度,我不知道如何将其更改为缩放到操作栏的高度,这样图标就不会失去质量。

<android.support.design.widget.AppBarLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:gravity="top"
    android:theme="@style/AppTheme.AppBarOverlay">

    <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:gravity="top"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        android:background="?attr/colorPrimary"
        app:popupTheme="@style/AppTheme.PopupOverlay" />

</android.support.design.widget.AppBarLayout>

Wrong Image

How it should look like

您必须拥有不同分辨率的图像,并将每个不同的图像添加到相应的文件夹中,如下所示:

Toolbar 中使用 ImageView 并在 ImageView

中将背景设置为来源
  <android.support.v7.widget.Toolbar
       style="@style/ToolBarStyle"
       xmlns:android="http://schemas.android.com/apk/res/android"
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:background="?attr/colorPrimary"
       android:minHeight="@dimen/abc_action_bar_default_height_material">

        <ImageView
            android:layout_width="wrap_content"
            android:contentDescription="@string/logo"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:src="@drawable/ic_launcher"/>

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

您可以使用如下 xml 布局将图像添加到工具栏的中央。

<android.support.v7.widget.Toolbar
   style="@style/ToolBarStyle"
   xmlns:android="http://schemas.android.com/apk/res/android"
   android:layout_width="match_parent"
   android:layout_height="wrap_content"
   android:background="?attr/colorPrimary"
   android:minHeight="@dimen/abc_action_bar_default_height_material">

    <ImageView
        android:layout_width="wrap_content"
        android:contentDescription="@string/logo"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:src="@drawable/yourDrawable"/>

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

我想你想在工具栏中设置图标,在这里你可以怎么做。

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

或者您可以在工具栏中添加一个 ImageView 并为其添加左边距,然后设置来自 Activity 的图像。