Android自定义后台xml发送属性

Mei*_*eir 5 android android-layout android-xml

我有以下xml文件:

<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <solid android:color="#FFFFFF"/>
    <corners android:radius="10dp"/>
    <padding android:left="0dp" android:top="0dp" android:right="0dp" android:bottom="0dp" /> 
</shape>
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,它只是一个带圆角的形状.我将它用于活动布局中的背景,如下所示:

android:background="@drawable/rounded_corners"
Run Code Online (Sandbox Code Playgroud)

文件中的形状当前设置为白色.在不同的布局中,我需要不同的颜色.我是否需要为每种颜色创建不同形状的xml文件?我需要一种方法来在布局中指定要发送到背景的颜色,这样我就可以使用相同的xml来获得我想要的任何颜色.

谢谢.

Meh*_*sar 3

Do I need to create a different shape xml file for each color?
Run Code Online (Sandbox Code Playgroud)
  • 是的,如果您想从布局的 xml 文件本身为不同的布局文件应用不同的颜色
  • 不,如果您从其java(活动)文件中为不同的布局文件应用不同的颜色。

选项2的解决方案:

//形状可绘制(rounded_corners.xml)

<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <solid android:color="#FFFFFF"/>
    <corners android:radius="10dp"/>
    <padding android:left="0dp" android:top="0dp" android:right="0dp" android:bottom="0dp" /> 
</shape>
Run Code Online (Sandbox Code Playgroud)

//布局文件

        <Button 
            android:id="@+id/mButton"
            ...
            android:background="@drawable/rounded_corners"
            />
Run Code Online (Sandbox Code Playgroud)

//java(活动)文件

Button mButton = (Button) findViewById(R.id.mButton); 
ShapeDrawable rounded_corners = (ShapeDrawable )mButton.getBackground();
rounded_corners.getPaint().setColor(Color.RED);
Run Code Online (Sandbox Code Playgroud)

我希望它会有所帮助!