如何删除自定义边距/填充并将其设置回读取 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()
}