android - Xamarin Android ListView 的垂直滚动

标签 android css xamarin xamarin.android

我正在尝试获取 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/

相关文章:

xamarin - 如何在 iOS 的 xamarin.forms 中更改应用程序商店的应用程序图标?

xaml - StringFormat 中的 Xamarin XAML 多语言

android - 如何在小部件中使用 onAppWidgetOptionsChanged()?

android - 为 ProgressDialog 设置最短时间,最长不需要

html - Bootstrap 中的动态面板主体

html - CSS 变换比例滚动问题

xamarin - Xamarin.forms 中的垂直 slider ?

java - if 语句 OR 逻辑奇数

android - 在 Android 中禁用抽屉导航中的项目

javascript - 选择器 'nth-last-child(n)' 在 chrome 中不起作用