这是我用来膨胀和添加视图的代码:
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">
答案 0 :(得分:0)
根据this answer,要将视图添加到LinearLayout的顶部,您应该传递0
作为要添加到addView(View childView,int index)的子视图的索引;
因此,请使用:parentLinearLayout.addView(rowView, 0);
希望它能起作用!