在ANKO中,无法直接重新赋值paddingTop和Val属性。但是可以通过创建一个新的View对象来实现类似的效果。
以下是一个示例代码:
import org.jetbrains.anko.*
class MyActivity : AnkoComponent {
override fun createView(ui: AnkoContext) = with(ui) {
verticalLayout {
val paddingView = view {
backgroundColor = resources.getColor(android.R.color.holo_blue_light)
// 设置paddingTop
setPadding(0, dip(20), 0, 0)
}.lparams(width = matchParent)
// ...
button("Change Padding") {
setOnClickListener {
// 创建一个新的View对象,并设置paddingTop
val newPaddingView = view {
backgroundColor = resources.getColor(android.R.color.holo_blue_light)
setPadding(0, dip(40), 0, 0)
}.lparams(width = matchParent)
// 替换原来的paddingView
paddingView.removeAllViews()
paddingView.addView(newPaddingView)
}
}.lparams(width = wrapContent, gravity = Gravity.CENTER_HORIZONTAL)
}
}
}
在上面的代码中,我们首先创建了一个paddingView,并设置了paddingTop属性。然后,在按钮的点击事件中,创建了一个新的newPaddingView对象,并设置了更大的paddingTop属性。最后,我们使用removeAllViews()方法将原来的paddingView清空,然后使用addView()方法添加新的newPaddingView。
通过这种方式,我们实现了重新设置paddingTop属性的效果。