在Android中自定义带有背景图像的XML可绘制资源

时间:2016-11-08 09:06:01

标签: android xml android-drawable xml-drawable

我正在开发一款Android应用。在我的应用程序中,我正在打开一个像对话框这样的活动。对于该活动背景,我想为整个背景设置图像,但是使用边框半径。所以我创建了这样的后台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的背景。当我打开活动时,我会得到这样的结果:

enter image description here

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

1 个答案:

答案 0 :(得分:1)

我可以给你一个更好的方法,我用它作为另一种选择。你可以在android中使用cardView来制作圆角的角落。

在gradle依赖项中添加cardView使用以下内容,

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

在你的活动中需要打开一个对话框,按如下方式更改你的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>

如果您正在使用扩展AppCompatActivity的活动,则

i.e. DialogActivity extends AppCompatActivity

你需要在下面的安卓清单中更改你的活动主题,

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