如何在ImageView中更改LayerDrawable?

时间:2013-02-02 16:33:03

标签: android android-layout layerdrawable gradientdrawable

我以编程方式向ImageView添加了几个LinearLayoutImageViewsrc设置为R.drawable.rectangle

我正在尝试创建一个纯色的矩形,只有左边的边框。

R.drawable.rectangle 如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
            <solid android:color="#000000" />
            <stroke android:width="1dp" android:color="#999" />
        </shape>
    </item>
    <item 
        android:top="0dp" android:left="1dp" android:bottom="0dp" android:right="0dp">
        <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" >
            <solid android:color="#283BCB"/>
            <size android:width="100dp" android:height="8dp" />
        </shape>
    </item>
</layer-list>

在我的活动中,我正在膨胀包含LinearLayout的布局,并且我正在以编程方式向其添加ImageView,这一切都正常。问题是我无法操纵矩形宽度。如果我这样做:

imageView.getLayoutParams().width = 10;

矩形需要不同的尺寸和颜色。但是,如果我这样做,矩形变形奇怪,这不会发生如果我不使用图层列表,但只使用一个形状(但这样我不能添加左边框)。

所以我猜我需要获得LayerDrawable,然后获取GradientDrawable并进行更改。但是我没有运气实现这一点。

LayerDrawable layer = (LayerDrawable)imageView.getDrawable();
GradientDrawable rectangle = (GradientDrawable)layer.getDrawable(1);
// rectangle.setBounds
// rectangle.setColor NOT working

任何提示?感谢

0 个答案:

没有答案