我有一个小型数据库,它将数据填充到列表视图中,该列表视图使用下面提供的其他布局来显示数据
如果第一个字段的文本超过两行,则文本开始隐藏。所以我想我会让listview的每一行都可以滚动。虽然它显示滚动条但没有任何反应
这是listview
使用的布局
<?xml version="1.0" encoding="utf-8"?>
<ScrollView
android:layout_height="75dp"
android:layout_width="match_parent"
xmlns:android="http://schemas.android.com/apk/res/android">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="75dp"
xmlns:android="http://schemas.android.com/apk/res/android">
<TextView
android:id="@+id/desc_d"
android:layout_width="165dp"
android:layout_height="match_parent"
android:layout_alignParentStart="true"
android:text="Description"
android:gravity="center"
android:textAppearance="@android:style/TextAppearance.Large"/>
<TextView
android:id="@+id/cate_d"
android:layout_width="70dp"
android:layout_height="match_parent"
android:gravity="center"
android:layout_toEndOf="@id/desc_d"
android:text="others"
android:textAppearance="@android:style/TextAppearance.Large" />
<TextView
android:id="@+id/date_d"
android:layout_width="70dp"
android:layout_height="match_parent"
android:gravity="center"
android:layout_toEndOf="@id/cate_d"
android:text="16/11/2017"
android:textAppearance="@android:style/TextAppearance.Large" />
<TextView
android:id="@+id/amt_d"
android:layout_width="80dp"
android:layout_height="match_parent"
android:gravity="center"
android:layout_toEndOf="@id/date_d"
android:text="100000"
android:textAppearance="@android:style/TextAppearance.Large" />
</RelativeLayout>
</ScrollView>
我的MainActivity布局有一个listview,它也可以滚动并使用上面的布局。
<?xml version="1.0" encoding="utf-8"?>
<ScrollView 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">
<android.support.constraint.ConstraintLayout 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"
android:descendantFocusability="beforeDescendants"
android:focusableInTouchMode="true"
android:keepScreenOn="false"
android:scrollbarAlwaysDrawHorizontalTrack="false"
android:scrollbarAlwaysDrawVerticalTrack="false"
tools:context="apps.harry.expensedata.MainActivity">
<Button
android:id="@+id/add_expense_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="24dp"
android:layout_marginTop="24dp"
android:onClick="addExpenseClick"
android:text="@string/button_1"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<Button
android:id="@+id/view_expense_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="24dp"
android:onClick="viewClick"
android:text="@string/button_2"
app:layout_constraintStart_toEndOf="@+id/add_expense_btn"
app:layout_constraintTop_toTopOf="parent" />
<RelativeLayout
android:id="@+id/relativeLayout"
android:layout_width="match_parent"
android:layout_height="406dp"
android:layout_marginTop="84dp"
app:layout_constraintTop_toTopOf="parent"
tools:layout_editor_absoluteX="0dp">
<ListView
android:id="@+id/list_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
tools:layout_editor_absoluteX="8dp"
tools:layout_editor_absoluteY="248dp" />
</RelativeLayout>
</android.support.constraint.ConstraintLayout>
</ScrollView>
正如您所看到的那样,该布局中的每一行都有一个滚动条,但滚动时没有任何反应。
请告诉我如何实现这一目标。
答案 0 :(得分:1)
这不是针对您的滚动问题的解决方案建议,但是由于用户体验,您应该考虑在可滚动列表中不能滚动列表项。
请参阅Material Guidelines。这里有一点摘录。
列表图块最多可包含三行文本,文本长度可能因同一列表中的图块而异。要显示三行以上的文字,请使用卡片。
将最有特色的内容放在图块的左侧,将最不显眼的内容放在右侧。
规格:
列表磁贴上的大部分空间应专用于主要操作 将最有区别的内容放在图块的左侧 在具有多行内容的切片中,将最有区别的内容放在第一行中 在右侧放置补充措施
答案 1 :(得分:0)
使scrollView
Height="wrap_content"
代替固定尺寸。也许有用
答案 2 :(得分:0)
尝试使用maxLines和minLines作为TextView的属性来容纳所有数据。
答案 3 :(得分:0)
在他们的指南中定义的Google不会在scrollview中使用scrollview,它更像是指导它无法正常工作。你看到了那种情况。 Tbe解决方案设置为您的listitem高度为wrap_content,最佳实践如上所述,不使用超过2-3行文本的listitems。查看materisl设计指南以查看列表项的维度
答案 4 :(得分:0)
我建议您将自定义列表项高度更改为wrap_content,然后您不需要滚动。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="horizontal"
android:padding="10dp">
<TextView
android:id="@+id/decription"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:hint="decription" />
<TextView
android:id="@+id/whatFor"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:hint="whatFor" />
<TextView
android:id="@+id/date"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:hint="date" />
<TextView
android:id="@+id/amount"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:hint="amount" />
</LinearLayout>
您的输出将如下图所示。
我希望您的问题能够得到解决,如果您还有任何疑问,请询问。