0
<?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?谢谢 !!!

4

1 回答 1

1

您可以使用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

于 2020-12-03T14:01:28.843 回答