高度和边距不适用于 inflate 和 addview?

Man*_*ath 3 android android-inflate kotlin

这是我的EditText

<?xml version="1.0" encoding="utf-8"?>
<EditText
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="49dp"
    android:layout_marginTop="3dp"
    android:text=""
    android:ems="10"
    android:gravity="center_vertical"
    android:imeOptions="actionNext"
    android:maxLines="1"
    android:background="@drawable/profile_edt_round_corners"
    android:drawablePadding="5dp"
    android:textSize="14sp"
    android:hint=""
    tools:ignore="RtlSymmetry"
    android:textColor="#4a4a4a"/>
Run Code Online (Sandbox Code Playgroud)

膨胀视图

private fun getRoundedEditText() =
    layoutInflater.inflate(R.layout.v_rounded_corners, null) as EditText
Run Code Online (Sandbox Code Playgroud)

设置值

private fun addDataToParents() {
    val editTextView = getRoundedEditText()
    editTextView.setText("Parent 1")
    ll_parents_guardian_container.addView(editTextView)
    val editTextView2 = getRoundedEditText()
    editTextView2.setText("Parent 2")
    ll_parents_guardian_container.addView(editTextView2)
}
Run Code Online (Sandbox Code Playgroud)

哪里ll_parents_guardian_container

<LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/ll_parents_guardian_container"
            android:orientation="vertical">
    </LinearLayout>
Run Code Online (Sandbox Code Playgroud)

然而,我已经在 XML 中定义的layout_marginTop和并没有反映在那里。layout_height

Man*_*ath 5

我发现了这个问题。

layoutInflater.inflate(R.layout.v_rounded_corners, null) as EditText
Run Code Online (Sandbox Code Playgroud)

在膨胀具有边距/高度属性的视图时,不应将根传递为空。这就是问题的原因。因为充气视图需要根来绘制布局参数。

因此,请使用您要添加的视图来更改它。

layoutInflater.inflate(R.layout.v_rounded_corners, ll_parents_guardian_container ) as EditText
Run Code Online (Sandbox Code Playgroud)

  • 我已经成功了,谢谢。只是留下一个注释,以防人们将来偶然发现这一点,使用视图绑定您可能会遇到同样的问题,但是容器的“null”传递隐藏在编译器生成的绑定类后面(除非您知道使用正确的方法重载) (2认同)