我按照一些例子绘制了一个圆圈但是当我改变颜色时,圆圈变成了一个正方形。颜色应用于视图。如何使用“@ + id / circle2”颜色更改实际圆圈,而不是包含圆圈的视图。
circle.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval"
android:id="@+id/circle2" > >
<gradient android:startColor="#FFFF0000" android:endColor="#80FF00FF"
android:angle="270"/>
</shape>
这是主xml
<View
android:id="@+id/colordot"
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_marginLeft="325dp"
android:layout_marginTop="35dp"
android:background="@drawable/circle" />
我投射包含circle.xml的视图
F1Color =(View) findViewById(R.id.colordot);
我改变了颜色
F1Color.setBackgroundColor(Color.rgb(R_value,G_value,B_value));
这很有效,谢谢你
private void SetColorDot(int index, int i, int j, int k)
Resources res = getResources();
final Drawable drawable = res.getDrawable(R.drawable.circle);
drawable.setColorFilter(Color.rgb(i, j, k), Mode.SRC_ATOP);
ImageView img = (ImageView) findViewById(R.id.colordot1);
img.setBackgroundDrawable(drawable);
答案 0 :(得分:0)
当您使用View.setBackgroundColor(color);
时,此会替换您之前设置为新Drawable
背景的ColorDrawable
,这就是您看到的原因方形。
一种可能的解决方案可能是将colordot
从View
更改为ImageView
- 这样您就可以使用setColorFilter()
。您可以在ColorFilter
中使用RGB颜色重新着色圆圈,即:
F1Color = (ImageView) findViewById(R.id.colordot);
F1Color.setColorFilter(new LightingColorFilter(Color.BLACK, Color.rgb(R_value, G_value, B_value));