如何删除自定义边距/填充并将其设置回读取 XML 布局中定义的内容
How to remove custom margins / padding and set it back to reading what was defined in the XML Layout
在我的 XML 布局中,我将边距/填充定义为正常:
android:layout_marginBottom="54dp"
然后我点击一个按钮,我通过这样做以编程方式覆盖它:
param.setMargins(0, 0, 0, 0)
textInputLayout.layoutParams = param
现在,我需要再次单击一个按钮,它应该返回到只读取我在 XML 布局中定义的边距值。如何清除/删除自定义边距?
我希望会有类似
的东西
param.clear()
有这样的吗?还是从现在开始我总是需要以编程方式覆盖它?
您必须在第二次点击按钮后重新设置边距。以下代码可能对您有所帮助。
// Instance variable
private var isSecondTime = false
// I have used FrameLayout as my parent, Replace with your parent layout. E.g LinearLayout
val params = FrameLayout.LayoutParams(
FrameLayout.LayoutParams.WRAP_CONTENT,
FrameLayout.LayoutParams.WRAP_CONTENT
)
并根据您的要求处理按钮点击。喜欢:
button.setOnClickListener {
if (!isSecondTime) {
isSecondTime = true
params.setMargins(0, 0, 0, 0)
} else {
// setting margin again to 54 dp
//setMargins(left, top, right, bottom)
params.setMargins(0, 0, 0, convertDPToPx(54))
}
textView.layoutParams = params
}
正在将 DP
转换为 Pixel
:
private fun convertDPToPx(dip: Int): Int {
val r: Resources = resources
return TypedValue.applyDimension(
TypedValue.COMPLEX_UNIT_DIP,
dip.toFloat(),
r.displayMetrics
).toInt()
}
在我的 XML 布局中,我将边距/填充定义为正常:
android:layout_marginBottom="54dp"
然后我点击一个按钮,我通过这样做以编程方式覆盖它:
param.setMargins(0, 0, 0, 0)
textInputLayout.layoutParams = param
现在,我需要再次单击一个按钮,它应该返回到只读取我在 XML 布局中定义的边距值。如何清除/删除自定义边距?
我希望会有类似
的东西param.clear()
有这样的吗?还是从现在开始我总是需要以编程方式覆盖它?
您必须在第二次点击按钮后重新设置边距。以下代码可能对您有所帮助。
// Instance variable
private var isSecondTime = false
// I have used FrameLayout as my parent, Replace with your parent layout. E.g LinearLayout
val params = FrameLayout.LayoutParams(
FrameLayout.LayoutParams.WRAP_CONTENT,
FrameLayout.LayoutParams.WRAP_CONTENT
)
并根据您的要求处理按钮点击。喜欢:
button.setOnClickListener {
if (!isSecondTime) {
isSecondTime = true
params.setMargins(0, 0, 0, 0)
} else {
// setting margin again to 54 dp
//setMargins(left, top, right, bottom)
params.setMargins(0, 0, 0, convertDPToPx(54))
}
textView.layoutParams = params
}
正在将 DP
转换为 Pixel
:
private fun convertDPToPx(dip: Int): Int {
val r: Resources = resources
return TypedValue.applyDimension(
TypedValue.COMPLEX_UNIT_DIP,
dip.toFloat(),
r.displayMetrics
).toInt()
}