片段不可滚动
Fragment is not scrollable
我正在尝试让我的整个片段可以垂直滚动。我已经实现了一个水平滚动视图,它工作正常。以下是我的 xml 文件。我尝试为整个片段实现滚动视图,但我收到一条错误消息,指出滚动视图只能承载一个直接子项。我是 java 的新手,所以详细的回答会有所帮助。
<?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:id="@+id/fragment_explore"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".ui.explore.ExploreFragment">
<HorizontalScrollView
android:id="@+id/horizontalScrollView"
android:layout_width="406dp"
android:layout_height="217dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.108">
<GridLayout
android:layout_width="wrap_content"
android:layout_height="217dp"
android:layout_marginStart="1dp"
android:layout_marginLeft="1dp"
android:layout_marginTop="1dp"
android:layout_marginEnd="1dp"
android:layout_marginRight="1dp"
android:layout_marginBottom="1dp"
android:columnCount="5"
android:orientation="horizontal"
android:rowCount="2"
android:useDefaultMargins="true">
<Button
android:id="@+id/but1"
android:layout_width="100dp"
android:layout_height="100dp"
android:onClick="deviceList" />
<ImageButton
android:id="@+id/imageButton3"
android:layout_width="100dp"
android:layout_height="100dp"
android:background="@null"
android:src="@drawable/logo_apple" />
<ImageButton
android:id="@+id/imageButton4"
android:layout_width="100dp"
android:layout_height="100dp"
android:background="@null"
android:src="@drawable/logo_logitech" />
<ImageButton
android:id="@+id/imageButton5"
android:layout_width="100dp"
android:layout_height="100dp"
android:background="@null"
android:src="@drawable/logo_razer" />
<ImageButton
android:id="@+id/imageButton6"
android:layout_width="100dp"
android:layout_height="100dp"
android:background="@null"
android:src="@drawable/logo_samsung" />
</GridLayout>
</HorizontalScrollView>
<ScrollView
android:layout_width="412dp"
android:layout_height="280dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="1.0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.996">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<GridLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:columnCount="1"
android:orientation="vertical"
android:rowCount="4">
<ImageButton
android:id="@+id/imageButton7"
android:layout_width="175dp"
android:layout_height="100dp"
android:background="@null"
android:layout_marginTop="10dp"
android:layout_marginLeft="10dp"
android:src="@drawable/icon_mp" />
<ImageButton
android:id="@+id/imageButton8"
android:layout_width="175dp"
android:layout_height="100dp"
android:background="@null"
android:layout_marginTop="10dp"
android:layout_marginLeft="10dp"
android:src="@drawable/icon_mp" />
<ImageButton
android:id="@+id/imageButton9"
android:layout_width="100dp"
android:layout_height="100dp"
android:background="@null"
android:src="@drawable/logo_samsung" />
<ImageButton
android:id="@+id/imageButton10"
android:layout_width="100dp"
android:layout_height="100dp"
android:background="@null"
android:src="@drawable/logo_samsung" />
<ImageButton
android:id="@+id/imageButton11"
android:layout_width="175dp"
android:layout_height="100dp"
android:background="@null"
android:layout_marginTop="10dp"
android:layout_marginLeft="10dp"
android:src="@drawable/icon_mp" />
<ImageButton
android:id="@+id/imageButton12"
android:layout_width="100dp"
android:layout_height="100dp"
android:background="@null"
android:src="@drawable/logo_samsung" />
</GridLayout>
</LinearLayout>
</ScrollView>
</androidx.constraintlayout.widget.ConstraintLayout>
当您需要多个滚动视图时,请使用 NestedScrollView。
我修改了你的代码。
<?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:id="@+id/fragment_explore"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<androidx.core.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="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">
<HorizontalScrollView
android:id="@+id/horizontalScrollView"
android:layout_width="match_parent"
android:layout_marginBottom="30dp"
android:layout_height="wrap_content">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Button
android:id="@+id/but1"
android:layout_width="100dp"
android:layout_height="100dp" />
<ImageButton
android:id="@+id/imageButton3"
android:layout_width="100dp"
android:layout_height="100dp"
android:background="@null"
android:src="@drawable/circle_red" />
<ImageButton
android:id="@+id/imageButton4"
android:layout_width="100dp"
android:layout_height="100dp"
android:background="@null"
android:src="@drawable/circle_red" />
<ImageButton
android:id="@+id/imageButton5"
android:layout_width="100dp"
android:layout_height="100dp"
android:background="@null"
android:src="@drawable/circle_red" />
<ImageButton
android:id="@+id/imageButton6"
android:layout_width="100dp"
android:layout_height="100dp"
android:background="@null"
android:src="@drawable/circle_red" />
</LinearLayout>
</HorizontalScrollView>
<ScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<GridLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:columnCount="1"
android:orientation="vertical"
android:rowCount="8">
<ImageButton
android:id="@+id/imageButton7"
android:layout_width="175dp"
android:layout_height="100dp"
android:layout_marginLeft="10dp"
android:layout_marginTop="10dp"
android:background="@null"
android:src="@drawable/circle_red" />
<ImageButton
android:id="@+id/imageButton8"
android:layout_width="175dp"
android:layout_height="100dp"
android:layout_marginLeft="10dp"
android:layout_marginTop="10dp"
android:background="@null"
android:src="@drawable/circle_red" />
<ImageButton
android:id="@+id/imageButton9"
android:layout_width="100dp"
android:layout_height="100dp"
android:background="@null"
android:src="@drawable/circle_red" />
<ImageButton
android:id="@+id/imageButton10"
android:layout_width="100dp"
android:layout_height="100dp"
android:background="@null"
android:src="@drawable/circle_red" />
<ImageButton
android:id="@+id/imageButton11"
android:layout_width="175dp"
android:layout_height="100dp"
android:layout_marginLeft="10dp"
android:layout_marginTop="10dp"
android:background="@null"
android:src="@drawable/circle_red" />
<ImageButton
android:layout_width="100dp"
android:layout_height="100dp"
android:background="@null"
android:src="@drawable/circle_red" />
<ImageButton
android:layout_width="100dp"
android:layout_height="100dp"
android:background="@null"
android:src="@drawable/circle_red" />
<ImageButton
android:layout_width="100dp"
android:layout_height="100dp"
android:background="@null"
android:src="@drawable/circle_red" />
<ImageButton
android:layout_width="100dp"
android:layout_height="100dp"
android:background="@null"
android:src="@drawable/circle_red" />
<ImageButton
android:layout_width="100dp"
android:layout_height="100dp"
android:background="@null"
android:src="@drawable/circle_red" />
<ImageButton
android:layout_width="100dp"
android:layout_height="100dp"
android:background="@null"
android:src="@drawable/circle_red" />
<ImageButton
android:layout_width="100dp"
android:layout_height="100dp"
android:background="@null"
android:src="@drawable/circle_red" />
</GridLayout>
</ScrollView>
</LinearLayout>
</androidx.core.widget.NestedScrollView>
它使两个滚动视图移动流畅。
除非你真的需要,否则请不要使用固定大小。检查这个。
我正在尝试让我的整个片段可以垂直滚动。我已经实现了一个水平滚动视图,它工作正常。以下是我的 xml 文件。我尝试为整个片段实现滚动视图,但我收到一条错误消息,指出滚动视图只能承载一个直接子项。我是 java 的新手,所以详细的回答会有所帮助。
<?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:id="@+id/fragment_explore"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".ui.explore.ExploreFragment">
<HorizontalScrollView
android:id="@+id/horizontalScrollView"
android:layout_width="406dp"
android:layout_height="217dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.108">
<GridLayout
android:layout_width="wrap_content"
android:layout_height="217dp"
android:layout_marginStart="1dp"
android:layout_marginLeft="1dp"
android:layout_marginTop="1dp"
android:layout_marginEnd="1dp"
android:layout_marginRight="1dp"
android:layout_marginBottom="1dp"
android:columnCount="5"
android:orientation="horizontal"
android:rowCount="2"
android:useDefaultMargins="true">
<Button
android:id="@+id/but1"
android:layout_width="100dp"
android:layout_height="100dp"
android:onClick="deviceList" />
<ImageButton
android:id="@+id/imageButton3"
android:layout_width="100dp"
android:layout_height="100dp"
android:background="@null"
android:src="@drawable/logo_apple" />
<ImageButton
android:id="@+id/imageButton4"
android:layout_width="100dp"
android:layout_height="100dp"
android:background="@null"
android:src="@drawable/logo_logitech" />
<ImageButton
android:id="@+id/imageButton5"
android:layout_width="100dp"
android:layout_height="100dp"
android:background="@null"
android:src="@drawable/logo_razer" />
<ImageButton
android:id="@+id/imageButton6"
android:layout_width="100dp"
android:layout_height="100dp"
android:background="@null"
android:src="@drawable/logo_samsung" />
</GridLayout>
</HorizontalScrollView>
<ScrollView
android:layout_width="412dp"
android:layout_height="280dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="1.0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.996">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<GridLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:columnCount="1"
android:orientation="vertical"
android:rowCount="4">
<ImageButton
android:id="@+id/imageButton7"
android:layout_width="175dp"
android:layout_height="100dp"
android:background="@null"
android:layout_marginTop="10dp"
android:layout_marginLeft="10dp"
android:src="@drawable/icon_mp" />
<ImageButton
android:id="@+id/imageButton8"
android:layout_width="175dp"
android:layout_height="100dp"
android:background="@null"
android:layout_marginTop="10dp"
android:layout_marginLeft="10dp"
android:src="@drawable/icon_mp" />
<ImageButton
android:id="@+id/imageButton9"
android:layout_width="100dp"
android:layout_height="100dp"
android:background="@null"
android:src="@drawable/logo_samsung" />
<ImageButton
android:id="@+id/imageButton10"
android:layout_width="100dp"
android:layout_height="100dp"
android:background="@null"
android:src="@drawable/logo_samsung" />
<ImageButton
android:id="@+id/imageButton11"
android:layout_width="175dp"
android:layout_height="100dp"
android:background="@null"
android:layout_marginTop="10dp"
android:layout_marginLeft="10dp"
android:src="@drawable/icon_mp" />
<ImageButton
android:id="@+id/imageButton12"
android:layout_width="100dp"
android:layout_height="100dp"
android:background="@null"
android:src="@drawable/logo_samsung" />
</GridLayout>
</LinearLayout>
</ScrollView>
</androidx.constraintlayout.widget.ConstraintLayout>
当您需要多个滚动视图时,请使用 NestedScrollView。
我修改了你的代码。
<?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:id="@+id/fragment_explore"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<androidx.core.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="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">
<HorizontalScrollView
android:id="@+id/horizontalScrollView"
android:layout_width="match_parent"
android:layout_marginBottom="30dp"
android:layout_height="wrap_content">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Button
android:id="@+id/but1"
android:layout_width="100dp"
android:layout_height="100dp" />
<ImageButton
android:id="@+id/imageButton3"
android:layout_width="100dp"
android:layout_height="100dp"
android:background="@null"
android:src="@drawable/circle_red" />
<ImageButton
android:id="@+id/imageButton4"
android:layout_width="100dp"
android:layout_height="100dp"
android:background="@null"
android:src="@drawable/circle_red" />
<ImageButton
android:id="@+id/imageButton5"
android:layout_width="100dp"
android:layout_height="100dp"
android:background="@null"
android:src="@drawable/circle_red" />
<ImageButton
android:id="@+id/imageButton6"
android:layout_width="100dp"
android:layout_height="100dp"
android:background="@null"
android:src="@drawable/circle_red" />
</LinearLayout>
</HorizontalScrollView>
<ScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<GridLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:columnCount="1"
android:orientation="vertical"
android:rowCount="8">
<ImageButton
android:id="@+id/imageButton7"
android:layout_width="175dp"
android:layout_height="100dp"
android:layout_marginLeft="10dp"
android:layout_marginTop="10dp"
android:background="@null"
android:src="@drawable/circle_red" />
<ImageButton
android:id="@+id/imageButton8"
android:layout_width="175dp"
android:layout_height="100dp"
android:layout_marginLeft="10dp"
android:layout_marginTop="10dp"
android:background="@null"
android:src="@drawable/circle_red" />
<ImageButton
android:id="@+id/imageButton9"
android:layout_width="100dp"
android:layout_height="100dp"
android:background="@null"
android:src="@drawable/circle_red" />
<ImageButton
android:id="@+id/imageButton10"
android:layout_width="100dp"
android:layout_height="100dp"
android:background="@null"
android:src="@drawable/circle_red" />
<ImageButton
android:id="@+id/imageButton11"
android:layout_width="175dp"
android:layout_height="100dp"
android:layout_marginLeft="10dp"
android:layout_marginTop="10dp"
android:background="@null"
android:src="@drawable/circle_red" />
<ImageButton
android:layout_width="100dp"
android:layout_height="100dp"
android:background="@null"
android:src="@drawable/circle_red" />
<ImageButton
android:layout_width="100dp"
android:layout_height="100dp"
android:background="@null"
android:src="@drawable/circle_red" />
<ImageButton
android:layout_width="100dp"
android:layout_height="100dp"
android:background="@null"
android:src="@drawable/circle_red" />
<ImageButton
android:layout_width="100dp"
android:layout_height="100dp"
android:background="@null"
android:src="@drawable/circle_red" />
<ImageButton
android:layout_width="100dp"
android:layout_height="100dp"
android:background="@null"
android:src="@drawable/circle_red" />
<ImageButton
android:layout_width="100dp"
android:layout_height="100dp"
android:background="@null"
android:src="@drawable/circle_red" />
<ImageButton
android:layout_width="100dp"
android:layout_height="100dp"
android:background="@null"
android:src="@drawable/circle_red" />
</GridLayout>
</ScrollView>
</LinearLayout>
</androidx.core.widget.NestedScrollView>
它使两个滚动视图移动流畅。
除非你真的需要,否则请不要使用固定大小。检查这个。