通过代码访问可绘制形状的属性

时间:2012-03-28 16:18:04

标签: java android

假设我将ImageView定义为:

<ImageView
    android:id="@+id/my_image_view"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="@drawable/my_image_view_background"
/>

my_image_view_background为:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval">

    <gradient
        android:angle="45"
        android:startColor="#555555"
        android:endColor="#111111"
        android:type="radial"
        android:centerX="0.1"
        android:centerY="0.1"
        android:gradientRadius="70"
        />

    <stroke 
        android:width="5dp"
        android:color="#ff3300"
        />

</shape>

是否可以访问my_image_view_background drawable并在代码中更改其笔触的颜色?此外,是否可以根据“状态”(按下/选择/默认)执行此操作?

1 个答案:

答案 0 :(得分:2)

是的可能

使用GradientDrawable可以通过代码完成。

link:

GradientDrawable gd = new GradientDrawable(GradientDrawable.Orientation.TOP_BOTTOM, new int[] {0xFFadced4, 0xFF71c2eb });
        gd.setCornerRadius(0f);
        gd.setStroke(1, 0xFF7c279b); //here you can define stroke width
        gd.setCornerRadius(3f);

refer this site: