如何在运行时更改android:底部


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

最新更新