其他分享
首页 > 其他分享> > 我可以覆盖可绘制形状的某些属性吗?

我可以覆盖可绘制形状的某些属性吗?

作者:互联网

我有两个按钮,它们是相同的形状,只是颜色不同

b1.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <corners android:radius="10dp" />
    <stroke android:width="5px" android:color="#000000" />
    <solid
        android:color="#ff0000"/>
</shape>

b2.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <corners android:radius="10dp" />
    <stroke android:width="5px" android:color="#000000" />
    <solid
        android:color="#00ff00"/>
</shape>

layout.xml

<Button
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@drawable/b1"
    android:text="B1" />


<Button
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@drawable/b2"
    android:text="B2" />

如果要创建具有不同颜色的100个按钮,则需要创建100个可绘制xml.

我只能创建一个可绘制的xml,然后覆盖布局xml中的颜色或其他属性吗?

解决方法:

通过XML,不行.如果需要动态处理,XML是固定元素,请使用Java.

在您的特定情况下,您可以尝试使用Drawable paint和ColorFilter来实现所需的功能,例如:

Button b1 = (Button) findViewById(R.id.button1);
ShapeDrawable sd = (ShapeDrawable) b1.getBackground();
sb.getPaint().setColor(color);
sb.setColorFilter(... something);

标签:android-drawable,shapedrawable,android
来源: https://codeday.me/bug/20191120/2040935.html