android studio addview通常会添加前2个视图,但随后它会在随机位置开始添加它们

时间:2018-08-06 20:34:53

标签: android xml android-studio layout-inflater

这是我用来膨胀和添加视图的代码:

         public void onAddField(View v) {
    LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    assert inflater != null;
    View rowView = inflater.inflate(R.layout.more_rooms, null);
    // Add the new row before the add field button.
    parentLinearLayout.addView(rowView, parentLinearLayout.getChildCount() - 1);

}

这是我要夸大的布局:

        <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content">

<EditText
    android:id="@+id/editText2"
    android:layout_width="245dp"
    android:layout_height="wrap_content"
    android:layout_gravity="top"
    android:layout_marginEnd="5dp"
    android:layout_marginTop="5dp"
    android:ems="10"
    android:hint="add another room"
    android:inputType="textPersonName"
    android:paddingStart="10dp"
    tools:layout_editor_absoluteX="152dp"
    tools:layout_editor_absoluteY="16dp" />

<ImageButton
    android:id="@+id/img_del"
    android:layout_width="50dp"
    android:layout_height="50dp"
    android:layout_gravity="top"
    android:layout_marginEnd="5dp"
    android:layout_marginTop="5dp"
    android:background="@null"
    android:onClick="onDelete"
    app:srcCompat="@android:drawable/ic_delete" />
        </LinearLayout>

我的问题是,当我按下添加按钮时,它通常会添加前两个视图,但是当我第三次按下时,它会在旧的2个视图之间添加一个新视图,现在这不是我可以管理的问题有了它,但它仍然困扰着我,所以我该如何解决这种问题,我想使新视图始终在顶部创建,而旧视图始终在下面。

这是父容器的代码:

        <LinearLayout
        android:id="@+id/ll_more"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginEnd="5dp"
        android:layout_marginStart="85dp"
        android:layout_marginTop="45dp"
        android:orientation="vertical">

1 个答案:

答案 0 :(得分:0)

根据this answer,要将视图添加到LinearLayout的顶部,您应该传递0作为要添加到addView(View childView,int index)的子视图的索引;

因此,请使用:parentLinearLayout.addView(rowView, 0);

希望它能起作用!