android - Listviews之间的按钮消失
问题描述
我尝试创建一个应该如下所示的布局:
- 列表显示
- 图像按钮
- 列表显示
- 图像按钮
- 列表显示
- 图像按钮
- ……
这样我最后就有了 5 个 Listviews 和 5 个 ImageButtons。
如果每个元素中只有一个元素,ListView
它可以正常工作,但是当我开始添加越来越多的元素时,按钮会消失在元素后面。
现在它看起来像一个大ListView
而不是被分隔Button
。
那就是layout.xml
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"
android:layout_height="match_parent">
<ListView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:id="@+id/detailview_1_listview"/>
<ImageButton
android:id="@+id/detailview_1_button_add"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="20dp"
android:layout_below="@id/detailview_1_listview"
android:src="@android:drawable/ic_input_add" />
<ListView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/detailview_1_button_add"
android:id="@+id/detailview_2_listview"/>
<ImageButton
android:id="@+id/detailview_2_button_add"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="20dp"
android:layout_below="@id/detailview_2_listview"
android:src="@android:drawable/ic_input_add" />
<ListView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/detailview_2_button_add"
android:id="@+id/detailview_3_listview"/>
<ImageButton
android:id="@+id/detailview_3_button_add"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="20dp"
android:layout_below="@id/detailview_3_listview"
android:src="@android:drawable/ic_input_add" />
<ListView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/detailview_3_button_add"
android:id="@+id/detailview_4_listview"/>
<ImageButton
android:id="@+id/detailview_4_button_add"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="20dp"
android:layout_below="@id/detailview_4_listview"
android:src="@android:drawable/ic_input_add" />
<ListView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/detailview_4_button_add"
android:id="@+id/detailview_5_listview" />
<ImageButton
android:id="@+id/detailview_5_button_add"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="20dp"
android:layout_below="@id/detailview_5_listview"
android:src="@android:drawable/ic_input_add" />
</RelativeLayout>
而且list_item.xml
是
<RelativeLayout
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="match_parent">
<ImageView
android:id="@+id/detailview_1_imageview"
android:layout_width="109dp"
android:layout_height="112dp"
app:srcCompat="@android:drawable/ic_menu_gallery"
tools:layout_editor_absoluteX="62dp"
tools:layout_editor_absoluteY="62dp" />
<ImageView
android:id="@+id/detailview_2_imageview"
android:layout_width="109dp"
android:layout_height="112dp"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:layout_marginStart="196dp"
app:srcCompat="@android:drawable/ic_menu_gallery"
tools:layout_editor_absoluteX="62dp"
tools:layout_editor_absoluteY="62dp" />
<Switch
android:id="@+id/detailview_switch_mangel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_alignParentTop="true"
android:layout_marginEnd="524dp"
android:layout_marginTop="94dp"
android:text="Mangel" />
<EditText
android:id="@+id/detailview_textview_beschreibung"
android:layout_width="230dp"
android:layout_height="73dp"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:layout_marginStart="366dp"
android:layout_marginTop="28dp"
android:ems="10"
android:inputType="textMultiLine"
android:hint="Beschreibung"/>
<EditText
android:id="@+id/detailview_textview_fensternummer"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignStart="@+id/detailview_switch_mangel"
android:layout_alignTop="@+id/detailview_textview_beschreibung"
android:ems="10"
android:hint="Nummer"
android:inputType="number" />
</RelativeLayout>
解决方案
我建议您将ImageButton
每个下方添加ListView
为 that 的页脚ListView
。在这种情况下,该按钮将不再隐藏,您将在滚动列表时获得适当的行为。
在您的ListView
. 为了方便起见,我只是在这里分享这个答案中的一些代码。
View footerView = ((LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE)).inflate(R.layout.footer_layout, null, false);
list.addFooterView(footerView);
请记住在将ListView
适配器设置到ListView
.
还有另一种方法来获得你想要的行为,使用NestedScrollView
. 这是一个很好的教程,介绍如何RecyclerView
在单个NestedScrollView
.
如果您正在考虑使用RecyclerView
而不是ListView
,您可能有一个单一RecyclerView
的并根据您的需要填充项目,就像这里建议的方式一样。这个想法是有一个单一的RecyclerView
,以便您可以以最有效的方式实现滚动和回收视图。
推荐阅读
- spring - 来自 Ionic 应用程序的 Api 调用未命中服务器 Api
- dart - Flutter Dart 类之间的回调或监听器
- angular - Ionic 4:一旦表达式为真,“销毁”ngIf
- android - 空白片段包含不需要的参数
- javascript - 类型错误:app.makeSingleInstance 不是函数
- go - 如何将终端中的 go 程序的输出通过管道传输到另一个程序?
- sql-server - 在条件下将值插入临时表并在插入时更改值(SQL Server)
- python - 超能实现什么
- jquery - 我们可以通过单击按钮获取仅在 jquery 数据表中更新的输入值吗?
- complexity-theory - O(1) 是否意味着算法需要一步来执行所需的任务?