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

How to change the android:bottom at runtime?

<?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>

在.xml中设置android:bottom="5dp"时,可以。但是现在,需要在运行时更改底部值。通过调试,xml 个文件被解析为 GradientDrawable。那么,如何改变GradientDrawable,使得设置底值wokrs呢?谢谢!!!

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

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

下面是修改底部偏移量的例子

val layerDrawable = ContextCompat.getDrawable(this, R.drawable.test) as LayerDrawable
layerDrawable.setLayerInset(0,0,0,0,200)
imageView.background=layerDrawable

第一个参数是要修改的层的索引,在这种情况下只有一层,因此它是 0 。其余 4 个值在 pixels 中,因此请确保在更改偏移量时先将 DP 转换为 pixel