Как изменить LayerDrawable в ImageView?

Я добавляю пару ImageView к LinearLayout программно, те ImageView иметь свой src установлен в 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 и я добавляю ImageViews к нему программно, это все работает. Проблема в том, что мне не удается манипулировать шириной прямоугольника. Если я сделаю:

imageView.getLayoutParams().width = 10;

Прямоугольники должны быть разных размеров и цветов. Однако, если я делаю это таким образом, прямоугольники странно деформируются, этого не произойдет, если я не использую список слоев, а только форму (но таким образом я не могу добавить левую границу).

Так что я думаю, мне нужно получить LayerDrawable, тогда получите GradientDrawable и измени его. Однако мне не повезло в достижении этого.

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

Есть намеки? Спасибо

0 ответов

Другие вопросы по тегам