Итак, я создал этот рисованный XML-файл rounded_rect. Я изначально задал свой цвет красным. Однако я хочу иметь возможность изменить этот цвет в моем файле макета.Изменение цвета формы в xml-файле с возможностью рисования через макет
rounded_rect.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" android:padding="10dp">
<solid android:color="#ffff1900"/>
<corners
android:bottomRightRadius="15dp"
android:bottomLeftRadius="15dp"
android:topLeftRadius="15dp"
android:topRightRadius="15dp"/>
<stroke android:width="4dp"
android:color="#000000"/>
</shape>
Мой файл макета содержит настраиваемый вид под названием ItemView. Один из моих пользовательских атрибутов - цвет фона.
<custonview.android.example.com.customview.ItemView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
custom:imagePath="@drawable/yes"
custom:text="Yes"
custom:backgroundColor="#000000"
android:layout_row="0"
android:layout_column="0"
android:background="@drawable/rounded_rect_green"
android:layout_margin="30dp" />
Цель состоит в том, чтобы быть в состоянии изменить цвет в моем вытяжке файл с цветом я присвоенной в моем файле макета. Вот мой ItemView.java файл
public class ItemView extends View {
//attributes of item view
private Drawable drawable;
private String text;
private int backgroundColor;
private int width, height;
private Paint paint;
public ItemView(Context context, AttributeSet attrs) {
super(context, attrs);
TypedArray a = context.getTheme().obtainStyledAttributes(attrs,
R.styleable.ItemView, 0, 0);
try {
text = a.getString(R.styleable.ItemView_text);
backgroundColor = a.getInteger(R.styleable.ItemView_backgroundColor, 0);
drawable = a.getDrawable(R.styleable.ItemView_imagePath);
} finally {
}
paint = new Paint();
width = drawable.getMinimumWidth()/2;
height = drawable.getMinimumHeight()/2;
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
setMeasuredDimension(width, height);
}
@Override
protected void onDraw(Canvas canvas) {
//positions the image in the middle horizontally and a little above the text below
drawable.setBounds(width/4, height/4 - 50, width - (width/4),
height - (height/4) - 50);
drawable.draw(canvas);
paint.setTextSize(100);
paint.setColor(Color.BLACK);
canvas.drawText(text, width/2 -
paint.measureText(text, 0, text.length())/2, height - 50, paint);
}
}
- Может быть, я над созерцая его. Бесплатно, чтобы быть творческим в ваших ответах. Заранее благодарю вас