以编程方式更改图层列表项的顶部/右侧/底部/左侧

Pha*_*inh 1 android drawable layer-list

我有一个 layer-list.xml

<?xml version="1.0" encoding="UTF-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
    </item>
    <item
        android:id="+id/item_2"
        android:bottom="1dp"
        android:left="1dp"
        android:right="1dp"
        android:top="1dp">
        <shape android:shape="rectangle">
            <solid android:color="@android:color/white" />
        </shape>
    </item>
</layer-list>
Run Code Online (Sandbox Code Playgroud)

现在我想改变项目的一些属性,比如(top,right)在运行时。我可以通过以下方式更改项目内部形状的颜色

LayerDrawable layerDrawable = (LayerDrawable) v.getContext().getResources().getDrawable(R.drawable.layer_list);
GradientDrawable drawable2 = (GradientDrawable) layerDrawable.findDrawableByLayerId(R.id.item_2);
drawable2.setColor(strokeColor[0]); 
Run Code Online (Sandbox Code Playgroud)

但是不知道怎么改top,right。我怎样才能改变它?
任何帮助或建议将不胜感激。

小智 5

试试这个方法:https : //developer.android.com/reference/android/graphics/drawable/LayerDrawable.html#setLayerInset (int , int, int, int, int)

  • 始终欢迎指向潜在解决方案的链接,但请[在链接周围添加上下文](http://meta.stackoverflow.com/a/8259/169503),以便您的其他用户了解它是什么以及为什么它是那里。始终引用重要链接中最相关的部分,以防目标站点无法访问或永久离线。考虑到“仅仅只是一个指向外部站点的链接”是[为什么以及如何删除某些答案?](http://stackoverflow.com/help/deleted-answers)的一个可能原因。 (2认同)