如何在运行时更改 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
。
<?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
。