如何在不拉伸图像的情况下设置 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 的图像。
在我的 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 的图像。