Android ScrollView 消失了我的其余部分 UI
Android ScrollView dissapearing the rest of my UI
我是 Android 布局设计的新手。我的问题是,当尝试向我的布局添加 ScrollView 时,它会消失我的 UI 的其余部分。在下面的代码中,当我取消对 ScrollView 的注释时,会发生上述问题。
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.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"
tools:context=".activity.SettingActivity">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<androidx.appcompat.widget.Toolbar
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/colorPrimary"
android:minHeight="?attr/actionBarSize"
android:theme="?attr/actionBarTheme"
app:title="Toolbar Title" />
</LinearLayout>
<!-- <ScrollView-->
<!-- android:layout_width="match_parent"-->
<!-- android:layout_height="match_parent">-->
<LinearLayout
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_marginStart="10dp"
android:layout_marginTop="70dp"
android:layout_marginEnd="10dp"
android:layout_marginBottom="1dp"
android:orientation="vertical"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Option 1"
android:textAlignment="center"
android:textSize="15sp"
android:textStyle="bold" />
<RadioGroup
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<RadioButton
android:layout_width="193dp"
android:layout_height="48dp"
android:text="Radio 1" />
<RadioButton
android:layout_width="match_parent"
android:layout_height="48dp"
android:text="Radio 2" />
</RadioGroup>
<View style="@style/Divider" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Option 2"
android:textAlignment="center"
android:textSize="15sp"
android:textStyle="bold" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Option 2 Description"
android:textAlignment="center" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Sub-option 2.1"
android:textStyle="bold" />
<EditText
android:layout_width="135dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:autofillHints="no"
android:ems="10"
android:inputType="numberSigned"
android:minHeight="48dp"
android:text="2"
android:textAlignment="center"
tools:ignore="LabelFor" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Sub-option 2.2"
android:textStyle="bold" />
<EditText
android:layout_width="135dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:autofillHints="no"
android:ems="10"
android:inputType="numberSigned"
android:minHeight="48dp"
android:text="3"
android:textAlignment="center"
tools:ignore="LabelFor" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Sub-option 2.3"
android:textStyle="bold" />
<EditText
android:layout_width="135dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:autofillHints="no"
android:ems="10"
android:inputType="numberSigned"
android:minHeight="48dp"
android:text="2"
android:textAlignment="center"
tools:ignore="LabelFor" />
</LinearLayout>
<View style="@style/Divider" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Option 3"
android:textAlignment="center"
android:textSize="15sp"
android:textStyle="bold" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Option 3.1"
android:textStyle="bold" />
<Spinner
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="48dp"
tools:ignore="DuplicateSpeakableTextCheck" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Option 3.2"
android:textStyle="bold" />
<Spinner
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="48dp" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Option 3.3"
android:textStyle="bold" />
<Spinner
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="48dp" />
<View style="@style/Divider" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Option 4"
android:textAlignment="center"
android:textSize="15sp"
android:textStyle="bold" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<androidx.appcompat.widget.SwitchCompat
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="48dp"
android:text="Option 4.1" />
<androidx.appcompat.widget.SwitchCompat
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="48dp"
android:text="txt_option_4_2" />
<androidx.appcompat.widget.SwitchCompat
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="48dp"
android:text="txt_option_4_3" />
</LinearLayout>
</LinearLayout>
<!-- </ScrollView>-->
</androidx.constraintlayout.widget.ConstraintLayout>
如何将 ScrollView 正确添加到我的 UI?我也觉得我可以让我的代码变得更好,所以我愿意接受任何与之相关的建议。
注意:我省略了 ID 和硬编码字符串,而不是在此处使用 @string 资源。
不要为 LinearLayout
提供边距和约束,而是像这样将它们移动到 ScrollView
:
<ScrollView
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_marginStart="10dp"
android:layout_marginTop="70dp"
android:layout_marginEnd="10dp"
android:layout_marginBottom="1dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<!-- Rest of the code -->
</LinearLayout>
</ScrollView>
并将 LinearLayout
宽度和高度分别更改为 match_parent
和 wrap_content
。 ScrollView
只能有一个 child。虽然,这对您来说不是问题,但只是想提一下。
这取决于您要如何安排根 ConstraintLayout 的子项的关系。如果将它们全部设置为
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
然后重叠,后面的隐藏前面的。
因此,您应该使用 app:layout_constraint*** 属性将它们设置为不相互重叠。
由于Whosebug并不是针对技术学习者设计的教程书,建议大家先找到ConstraintLayout的文档阅读一下。
我是 Android 布局设计的新手。我的问题是,当尝试向我的布局添加 ScrollView 时,它会消失我的 UI 的其余部分。在下面的代码中,当我取消对 ScrollView 的注释时,会发生上述问题。
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.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"
tools:context=".activity.SettingActivity">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<androidx.appcompat.widget.Toolbar
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/colorPrimary"
android:minHeight="?attr/actionBarSize"
android:theme="?attr/actionBarTheme"
app:title="Toolbar Title" />
</LinearLayout>
<!-- <ScrollView-->
<!-- android:layout_width="match_parent"-->
<!-- android:layout_height="match_parent">-->
<LinearLayout
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_marginStart="10dp"
android:layout_marginTop="70dp"
android:layout_marginEnd="10dp"
android:layout_marginBottom="1dp"
android:orientation="vertical"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Option 1"
android:textAlignment="center"
android:textSize="15sp"
android:textStyle="bold" />
<RadioGroup
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<RadioButton
android:layout_width="193dp"
android:layout_height="48dp"
android:text="Radio 1" />
<RadioButton
android:layout_width="match_parent"
android:layout_height="48dp"
android:text="Radio 2" />
</RadioGroup>
<View style="@style/Divider" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Option 2"
android:textAlignment="center"
android:textSize="15sp"
android:textStyle="bold" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Option 2 Description"
android:textAlignment="center" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Sub-option 2.1"
android:textStyle="bold" />
<EditText
android:layout_width="135dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:autofillHints="no"
android:ems="10"
android:inputType="numberSigned"
android:minHeight="48dp"
android:text="2"
android:textAlignment="center"
tools:ignore="LabelFor" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Sub-option 2.2"
android:textStyle="bold" />
<EditText
android:layout_width="135dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:autofillHints="no"
android:ems="10"
android:inputType="numberSigned"
android:minHeight="48dp"
android:text="3"
android:textAlignment="center"
tools:ignore="LabelFor" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Sub-option 2.3"
android:textStyle="bold" />
<EditText
android:layout_width="135dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:autofillHints="no"
android:ems="10"
android:inputType="numberSigned"
android:minHeight="48dp"
android:text="2"
android:textAlignment="center"
tools:ignore="LabelFor" />
</LinearLayout>
<View style="@style/Divider" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Option 3"
android:textAlignment="center"
android:textSize="15sp"
android:textStyle="bold" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Option 3.1"
android:textStyle="bold" />
<Spinner
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="48dp"
tools:ignore="DuplicateSpeakableTextCheck" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Option 3.2"
android:textStyle="bold" />
<Spinner
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="48dp" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Option 3.3"
android:textStyle="bold" />
<Spinner
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="48dp" />
<View style="@style/Divider" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Option 4"
android:textAlignment="center"
android:textSize="15sp"
android:textStyle="bold" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<androidx.appcompat.widget.SwitchCompat
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="48dp"
android:text="Option 4.1" />
<androidx.appcompat.widget.SwitchCompat
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="48dp"
android:text="txt_option_4_2" />
<androidx.appcompat.widget.SwitchCompat
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="48dp"
android:text="txt_option_4_3" />
</LinearLayout>
</LinearLayout>
<!-- </ScrollView>-->
</androidx.constraintlayout.widget.ConstraintLayout>
如何将 ScrollView 正确添加到我的 UI?我也觉得我可以让我的代码变得更好,所以我愿意接受任何与之相关的建议。
注意:我省略了 ID 和硬编码字符串,而不是在此处使用 @string 资源。
不要为 LinearLayout
提供边距和约束,而是像这样将它们移动到 ScrollView
:
<ScrollView
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_marginStart="10dp"
android:layout_marginTop="70dp"
android:layout_marginEnd="10dp"
android:layout_marginBottom="1dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<!-- Rest of the code -->
</LinearLayout>
</ScrollView>
并将 LinearLayout
宽度和高度分别更改为 match_parent
和 wrap_content
。 ScrollView
只能有一个 child。虽然,这对您来说不是问题,但只是想提一下。
这取决于您要如何安排根 ConstraintLayout 的子项的关系。如果将它们全部设置为
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
然后重叠,后面的隐藏前面的。
因此,您应该使用 app:layout_constraint*** 属性将它们设置为不相互重叠。
由于Whosebug并不是针对技术学习者设计的教程书,建议大家先找到ConstraintLayout的文档阅读一下。