我正在尝试使整个片段垂直滚动。我已经实现了水平滚动视图,并且效果很好。以下是我的xml文件。我已经尝试为整个片段实现scrollview,但是却收到一条错误消息,指出scrollview只能托管一个直接子代。我是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>
它使两个滚动视图都平滑移动。
并且请不要使用固定大小,除非您确实需要。检查一下。