在 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));
我正在开发 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));