在 Android 中使用背景图像自定义 XML 可绘制资源

Customizing XML drawable resource with image for background in Android

我正在开发 Android 应用程序。在我的应用程序中,我打开了一个像对话框一样的 activity。对于那个 activity 背景,我想为整个背景设置图像,但要有边框半径。所以我像这样创建了背景 XML 资源。

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
    <item android:drawable="@drawable/match_background_image" />
    <item>
        <shape android:shape="rectangle" android:padding="10dp">
            <corners
                android:bottomRightRadius="5dp"
                android:bottomLeftRadius="5dp"
                android:topLeftRadius="5dp"
                android:topRightRadius="5dp"/>
        </shape>
    </item>

</layer-list>

我将该资源设置为 LinearLayout 的背景。当我打开 activity 时,我得到这样的信息:

如您所见,拐角处没有边框半径。此外,我想做的是我还想将图像的 scaleType 设置为 cropCenter。那么是否可以仅在 XML 资源中完成?

我可以给你一个更好的方法,我已经用这个作为替代方法。您可以使用 android 中的 cardView 使您的角变成圆形。

在您的 gradle 依赖项中添加 cardView 使用,

compile 'com.android.support:cardview-v7:25.1.1'

在你的 activity 中需要作为对话框打开的,改变你的 xml 如下,

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:card_view="http://schemas.android.com/apk/res-auto"
    android:id="@+id/activity_dialog"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    card_view:cardCornerRadius="10dp">

    <ImageView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@drawable/YOUR_IMAGE"/>

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

如果您使用 activity 扩展 AppCompatActivity,

i.e. DialogActivity extends AppCompatActivity

您需要更改 android 清单中的 activity 主题,如下所示,

<activity android:name=".DialogActivity"
            android:theme="@style/Theme.AppCompat.Dialog"></activity>

其他

<activity android:theme="@android:style/Theme.Dialog" />

haaaaa,困难的部分已经完成,所以现在你唯一需要做的就是打电话

startActivity(new Intent(this, DialogActivity.class));