如何在运行时更改android:bottom?

如何在运行时更改android:bottom?,android,android-layout,drawable,gradientdrawable,Android,Android Layout,Drawable,Gradientdrawable,在.xml中设置android:bottom=“5dp”时,它可以工作。但是现在,需要在运行时更改bottom值。通过调试,xml文件被解析为GradientDrawable。那么,如何更改GradientDrawable,设置底部值wokrs?谢谢 您可以使用。它接受每侧的图层索引和4个偏移值 <?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="h

在.xml中设置android:bottom=“5dp”时,它可以工作。但是现在,需要在运行时更改bottom值。通过调试,xml文件被解析为GradientDrawable。那么,如何更改GradientDrawable,设置底部值wokrs?谢谢

您可以使用。它接受每侧的图层索引和4个偏移值

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:gravity="center|bottom"
        android:bottom="5dp">
        <shape android:shape="rectangle">
            <solid android:color="#FF0000" />
            <corners android:radius="2dp" />
            <size
                android:width="10dp"
                android:height="2dp" />
        </shape>
    </item>
</layer-list>
下面是修改底部偏移的示例

setLayerInset(layer, leftOffset, topOffset, rightOffset, bottomOffset)

第一个参数是要修改的层的索引。在本例中,只有一个层,所以它是0。其余4个值以
像素为单位
,因此在更改偏移量时,请确保首先将
DP
转换为
pixel

谢谢,它适合我!尝试更改
GradientDrawable
对象会使我在开始时出错。
val layerDrawable = ContextCompat.getDrawable(this, R.drawable.test) as LayerDrawable
layerDrawable.setLayerInset(0,0,0,0,200)
imageView.background=layerDrawable