<?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>
当设置android时:bottom="5dp";在.xml中,它是有效的但现在,需要在运行时更改底部值。通过调试,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
。