【问题标题】:Android custom background xml send attributeAndroid自定义背景xml发送属性
【发布时间】:2013-05-31 12:23:40
【问题描述】:

我有以下 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>

如您所见,它只是一个圆角的形状。我将它用作活动布局中的背景,如下所示:

android:background="@drawable/rounded_corners"

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

谢谢。

【问题讨论】:

  • 这可能就是你要找的东西:stackoverflow.com/questions/11376516/…
  • 我正在寻找一种通过 xml 设置它的方法。像 background="red" src="drawable.."
  • 在这种情况下,我认为这是不可能的,您将需要多种形状。虽然我可能是错的,但在这种情况下,我也想知道如何做到这一点:)
  • 我的问题也可以翻译成“有没有办法将自定义属性绑定到xml?”可能像 wpf 这样的东西允许
  • 我可以使用 attrs.xml 吗?还是仅适用于自定义组件?

标签: android android-layout android-xml


【解决方案1】:
Do I need to create a different shape xml file for each color?
  • 是的,如果您想为 布局的 xml 文件本身的不同布局文件应用不同的颜色
  • 否,如果您从其 java (Activity) 文件为不同的布局文件应用不同的颜色。

选项 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>

//布局文件

        <Button 
            android:id="@+id/mButton"
            ...
            android:background="@drawable/rounded_corners"
            />

//java(活动)文件

Button mButton = (Button) findViewById(R.id.mButton); 
ShapeDrawable rounded_corners = (ShapeDrawable )mButton.getBackground();
rounded_corners.getPaint().setColor(Color.RED);

希望对你有帮助!!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多