在尝试改变颜色时,形状变为方形

时间:2013-11-11 00:38:42

标签: android android-layout

我按照一些例子绘制了一个圆圈但是当我改变颜色时,圆圈变成了一个正方形。颜色应用于视图。如何使用“@ + 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);

1 个答案:

答案 0 :(得分:0)

当您使用View.setBackgroundColor(color);时,此会替换您之前设置为新Drawable背景的ColorDrawable,这就是您看到的原因方形。

一种可能的解决方案可能是将colordotView更改为ImageView - 这样您就可以使用setColorFilter()。您可以在ColorFilter中使用RGB颜色重新着色圆圈,即:

F1Color = (ImageView) findViewById(R.id.colordot);
F1Color.setColorFilter(new LightingColorFilter(Color.BLACK, Color.rgb(R_value, G_value, B_value));