我在我的文件夹绘制这种形状:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners android:radius="5dp" />
<solid android:color="#ffffff" />
<stroke android:width="2dp" android:color="#B5B5B5"/>
</shape>
这个定义与圆角的矩形,我可以应用它作为背景像这样任何面板: 机器人:背景=“@绘制/ round_corner_shape”。
问题来了:我有几个面板上我的应用程序,与外形一样的背景,但对于每个形状我想不同的边框(中风)的颜色。 我不想创建3种形状,唯一的区别是在笔触颜色。 是否有可能在运行时的行程量的变化?
我有同样的问题。 就我而言,我有一个GridView,其中在电网中的项目可以有边框的颜色由用户在运行时改变。
因此,在为gridviewAdapter该栅格,我确实在getView方法以下的(生成该视图为适配器之一)
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.griditem, null);
GradientDrawable gradientDrawable = (GradientDrawable) convertView.getBackground();
gradientDrawable.setStroke(2, mColor);
convertView.invalidate();
return convertView;
}
mColor是代表色,就像我们在XML文件中做一个int值。 在Java代码中,而不是“#”我们用“0X”在AARRGGBB格式来定义它。 例如,使用0xFF000000为100%不透明的黑色和0xFF0000FF为100%不透明的蓝色。 自从谷歌API的“有益”在这里解释这告诉INT颜色是“笔触颜色”。
这解决了我的问题。我想你可以尝试你的情况类似。
嗨,你可以尝试创建运行时的背景,那么你可以改变它,只要你想要的。
RoundRectShape rect = new RoundRectShape(
new float[] {30,30, 30,30, 30,30, 30,30},
null,
null);
ShapeDrawable bg = new ShapeDrawable(rect);
bg.getPaint().setColor(0x99FFFFFF);
view.setBackgroundDrawable(bg);