Android 滚动视图不换行 child
Android Scrollview doesn't wrap child
这是布局 xml 文件:
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:scrollbars = "vertical">
<LinearLayout
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="factory.Settings"
android:layout_height="fill_parent"
android:layout_width="fill_parent"
android:orientation="vertical">
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/lblShopID"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/ShopId"
android:textAppearance="?android:attr/textAppearanceMedium" />
<EditText
android:id="@+id/txtShopID"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="text"
android:layout_weight="1" />
</LinearLayout>
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/lblShopname"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_below="@+id/lblShopID"
android:layout_marginTop="36dp"
android:text="@string/ShopName"
android:textAppearance="?android:attr/textAppearanceMedium" />
<Spinner
android:id="@+id/spinShopName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/lblShopname"
android:layout_toRightOf="@+id/lblShopname" />
</LinearLayout>
<Button
android:id="@+id/btnSaveChanges"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:layout_below="@+id/spinShopName"
android:layout_marginTop="22dp"
android:onClick="saveData"
android:text="Save Changes" />
<TextView
android:id="@+id/txtChangePassword"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_centerVertical="true"
android:text="@string/ChangePassword"
android:textAppearance="?android:attr/textAppearanceMedium"
android:layout_marginTop="30px" />
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="30px">
<TextView
android:id="@+id/lblOldPassword"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/OldPassword"
android:textAppearance="?android:attr/textAppearanceMedium" />
<EditText
android:id="@+id/txtOldPassword"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ems="10"
android:inputType="textPassword" />
</LinearLayout>
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/lblNewPassword"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/NewPassword"
android:textAppearance="?android:attr/textAppearanceMedium" />
<EditText
android:id="@+id/txtNewPassword"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ems="10"
android:inputType="textPassword" />
</LinearLayout>
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/lblRetypePassword"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/RetypePassword"
android:textAppearance="?android:attr/textAppearanceMedium" />
<EditText
android:id="@+id/txtRetypePassword"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ems="10"
android:inputType="textPassword" />
</LinearLayout>
<Button
android:id="@+id/btnChangePassword"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="changePassword"
android:text="Change Password" />
<ListView
android:id="@+id/lstUsers"
android:layout_width="340dp"
android:layout_height="wrap_content" />
</LinearLayout>
</ScrollView>
这是预期的输出:
预期的输出是:我在 lstUsers
中有一些项目并且没有足够的 space 来显示所有用户,所以我想在布局中添加一个滚动视图让用户向下滚动。
但问题是:scrollview 根本没有包装任何控件,结果是:
如您所见,滚动视图无法包装 lstUser
布局文件有问题吗?
我认为您不能将列表视图放在滚动视图中。 Listview 实现了自己的滚动条,因此它不喜欢在滚动视图中。看看这个link
How can I put a ListView into a ScrollView without it collapsing?
Scrollview 和 Listview 不能很好地相互配合。
我建议你将 'lstUsers' Listview 作为布局文件的主要内容。
使用列表视图上方的视图创建一个单独的布局文件。
然后扩充此布局文件并将其作为 header 视图添加到列表视图中。
这是布局 xml 文件:
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:scrollbars = "vertical">
<LinearLayout
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="factory.Settings"
android:layout_height="fill_parent"
android:layout_width="fill_parent"
android:orientation="vertical">
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/lblShopID"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/ShopId"
android:textAppearance="?android:attr/textAppearanceMedium" />
<EditText
android:id="@+id/txtShopID"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="text"
android:layout_weight="1" />
</LinearLayout>
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/lblShopname"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_below="@+id/lblShopID"
android:layout_marginTop="36dp"
android:text="@string/ShopName"
android:textAppearance="?android:attr/textAppearanceMedium" />
<Spinner
android:id="@+id/spinShopName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/lblShopname"
android:layout_toRightOf="@+id/lblShopname" />
</LinearLayout>
<Button
android:id="@+id/btnSaveChanges"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:layout_below="@+id/spinShopName"
android:layout_marginTop="22dp"
android:onClick="saveData"
android:text="Save Changes" />
<TextView
android:id="@+id/txtChangePassword"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_centerVertical="true"
android:text="@string/ChangePassword"
android:textAppearance="?android:attr/textAppearanceMedium"
android:layout_marginTop="30px" />
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="30px">
<TextView
android:id="@+id/lblOldPassword"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/OldPassword"
android:textAppearance="?android:attr/textAppearanceMedium" />
<EditText
android:id="@+id/txtOldPassword"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ems="10"
android:inputType="textPassword" />
</LinearLayout>
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/lblNewPassword"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/NewPassword"
android:textAppearance="?android:attr/textAppearanceMedium" />
<EditText
android:id="@+id/txtNewPassword"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ems="10"
android:inputType="textPassword" />
</LinearLayout>
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/lblRetypePassword"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/RetypePassword"
android:textAppearance="?android:attr/textAppearanceMedium" />
<EditText
android:id="@+id/txtRetypePassword"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ems="10"
android:inputType="textPassword" />
</LinearLayout>
<Button
android:id="@+id/btnChangePassword"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="changePassword"
android:text="Change Password" />
<ListView
android:id="@+id/lstUsers"
android:layout_width="340dp"
android:layout_height="wrap_content" />
</LinearLayout>
</ScrollView>
这是预期的输出:
预期的输出是:我在 lstUsers
中有一些项目并且没有足够的 space 来显示所有用户,所以我想在布局中添加一个滚动视图让用户向下滚动。
但问题是:scrollview 根本没有包装任何控件,结果是:
如您所见,滚动视图无法包装 lstUser
布局文件有问题吗?
我认为您不能将列表视图放在滚动视图中。 Listview 实现了自己的滚动条,因此它不喜欢在滚动视图中。看看这个link
How can I put a ListView into a ScrollView without it collapsing?
Scrollview 和 Listview 不能很好地相互配合。
我建议你将 'lstUsers' Listview 作为布局文件的主要内容。
使用列表视图上方的视图创建一个单独的布局文件。
然后扩充此布局文件并将其作为 header 视图添加到列表视图中。