我正在尝试获取 ListView 的垂直滚动,但所有 ListView 项始终都在显示,即使这意味着它们将离开手机显示屏。
这是我一直在使用的代码:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:minWidth="25px"
android:minHeight="25px">
<GridLayout
android:minWidth="25px"
android:minHeight="25px"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:rowCount="6"
android:columnCount="1"
android:orientation="vertical"
android:id="@+id/myGridID">
<!-- other controls like TextView, EditBox, other Grid layouts -->
<ListView
android:layout_row="4"
android:layout_column="0"
android:isScrollContainer="true"
android:choiceMode="singleChoice"
android:scrollbarSize="100px"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/myListId" />
<!-- other controls like TextView, EditBox, other Grid layouts -->
</GridLayout>
</LinearLayout>
我预计当列表项的高度超过 100px(大于 android:scrollbarSize 的值)时,垂直滚动将变为 Activity 状态。这不会发生。
使用下面的代码:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:minWidth="25px"
android:minHeight="25px">
<GridLayout
android:minWidth="25px"
android:minHeight="25px"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:rowCount="6"
android:columnCount="1"
android:orientation="vertical"
android:id="@+id/myGridID">
<!-- other controls like TextView, EditBox, other Grid layouts -->
<ScrollView
a:visibility="visible"
xmlns:a="http://schemas.android.com/tools"
android:scrollbars="vertical"
android:visibility="visible"
android:layout_height="150px"
android:layout_row="4"
android:layout_column="0">
<ListView
android:isScrollContainer="true"
android:choiceMode="singleChoice"
android:scrollbarSize="100px"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/myListId" />
</ScrollView>
<!-- other controls like TextView, EditBox, other Grid layouts -->
</GridLayout>
</LinearLayout>
所以将 ListView 放在 ScrollView 中会创建一个垂直滚动,但始终只显示一个列表项,所以在这里我也应该从 ListView 中看到至少三个元素,然后滚动浏览其余的元素。
我仍然更喜欢在可能的情况下仅使用 ListView 来向我的应用程序添加垂直滚动功能,因为在尝试从列表中获取子项时,ScrollView 似乎会使事情复杂化。
有人可以解释一下我在构建 android xamarin ListView 的垂直滚动时做错了什么吗?
最佳答案
默认情况下,Listview 有一个 Scroll,将 scrollview 作为父级添加到它是一种不好的做法,
为了更好地了解其工作原理,请查看以下帖子 here
更新
去掉滚动条,修改listview代码如下:
<ListView
android:layout_width="match_parent"
android:divider="#D3D3D3" //divider color
android:dividerHeight="1dip" // Height
android:layout_height="wrap_content"
android:id="@+id/myListId"
/>
如果您也需要以下属性,请将它们一一添加并查看更改这些是否会导致任何问题。
android:isScrollContainer="true"
android:choiceMode="singleChoice"
android:scrollbarSize="100px"
关于android - Xamarin Android ListView 的垂直滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53997759/