如何仅使用ScrollView和Linear Layout滚动部分布局?

问题描述 投票:0回答:1

我有一个layout.xml,它分为2个部分,其中一个包括垂直填充的字段,另一部分(初始)包含3个将用于填充imageView的cardview(以后),但是,当尝试仅让Cardview进行水平滚动时,什么也没有发生,唯一发生的是整个布局都在垂直滚动,而Cardview却没有在水平滚动。

。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"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:gravity="center"
    android:scrollbars="vertical">
<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:gravity="center"
    android:background="#FAFAFA">
    <com.google.android.material.appbar.AppBarLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        <androidx.appcompat.widget.Toolbar
            android:id="@+id/toolbar4"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            app:titleTextColor="@android:color/white"
            android:background="@color/colorPrimary" />
    </com.google.android.material.appbar.AppBarLayout>
    <com.google.android.material.textview.MaterialTextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Adicione até 3 fotos do seu produto"
        android:fontFamily="@font/bevan"
        android:gravity="center"/>
    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent">
        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="horizontal">
        <com.google.android.material.card.MaterialCardView
            android:id="@+id/anuncioImg1"
            android:layout_width="120dp"
            android:layout_height="120dp"
            android:layout_margin="6dp">
            <com.google.android.material.textview.MaterialTextView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:gravity="center"
                android:text="+"/>
        </com.google.android.material.card.MaterialCardView>
        <com.google.android.material.card.MaterialCardView
            android:id="@+id/anuncioImg2"
            android:layout_width="120dp"
            android:layout_height="120dp"
            android:layout_margin="6dp">
            <com.google.android.material.textview.MaterialTextView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:gravity="center"
                android:text="+"/>
        </com.google.android.material.card.MaterialCardView>
        <com.google.android.material.card.MaterialCardView
            android:id="@+id/anuncioImg3"
            android:layout_width="120dp"
            android:layout_height="120dp"
            android:layout_margin="6dp">
            <com.google.android.material.textview.MaterialTextView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:gravity="center"
                android:text="+"/>
        </com.google.android.material.card.MaterialCardView>
        <com.google.android.material.card.MaterialCardView
            android:id="@+id/anuncioImg4"
            android:layout_width="120dp"
            android:layout_height="120dp"
            android:layout_margin="6dp">
            <com.google.android.material.textview.MaterialTextView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:gravity="center"
                android:text="+"/>
        </com.google.android.material.card.MaterialCardView>
            <com.google.android.material.card.MaterialCardView
                android:id="@+id/anuncioImg5"
                android:layout_width="120dp"
                android:layout_height="120dp"
                android:layout_margin="6dp">
                <com.google.android.material.textview.MaterialTextView
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center"
                    android:gravity="center"
                    android:text="+"/>
            </com.google.android.material.card.MaterialCardView>
        </LinearLayout>
    </ScrollView>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical">
        <com.google.android.material.textview.MaterialTextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginStart="4dp"
            android:text="Título do Anúncio:"
            android:textAppearance="@style/TextAppearance.AppCompat.Light.SearchResult.Title" />
    <com.google.android.material.textfield.TextInputLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="Ex: Gado Nelore 300Kg"
        app:startIconDrawable="@drawable/ic_text_fields_24dp"
        app:startIconTint="@color/colorPrimary"
        app:helperTextEnabled="true"
        app:helperTextTextColor="@android:color/black"
        app:helperTextTextAppearance="@style/TextAppearance.AppCompat.Caption"
        app:boxBackgroundColor="@android:color/white"
        app:counterEnabled="true"
        app:counterMaxLength="30"
        app:counterTextColor="@color/colorPrimary">
        <com.google.android.material.textfield.TextInputEditText
            android:id="@+id/tituloAnuncio"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:inputType="textShortMessage"
            android:maxLength="30" />
    </com.google.android.material.textfield.TextInputLayout>
        <com.google.android.material.textview.MaterialTextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginStart="4dp"
            android:text="Descrição:"
            android:textAppearance="@style/TextAppearance.AppCompat.Light.SearchResult.Title" />
        <com.google.android.material.textfield.TextInputLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="Ex: Gado 20 meses de vida, 10 arrobas..."
            app:startIconDrawable="@drawable/ic_short_text_24dp"
            app:startIconTint="@color/colorPrimary"
            app:helperTextEnabled="true"
            app:helperTextTextColor="@android:color/black"
            app:helperTextTextAppearance="@style/TextAppearance.AppCompat.Caption"
            app:boxBackgroundColor="@android:color/white"
            app:counterEnabled="true"
            app:counterMaxLength="240"
            app:counterTextColor="@color/colorPrimary">
            <com.google.android.material.textfield.TextInputEditText
                android:id="@+id/editDescAnuncio"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:inputType="textMultiLine"
                android:maxLength="240"/>
        </com.google.android.material.textfield.TextInputLayout>
        <com.google.android.material.textview.MaterialTextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginStart="4dp"
            android:text="Preço:"
            android:textAppearance="@style/TextAppearance.AppCompat.Light.SearchResult.Title" />
        <com.google.android.material.textfield.TextInputLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="Ex: 1650"
            app:startIconDrawable="@drawable/ic_monetization_on"
            app:startIconTint="@color/colorPrimary"
            app:helperTextEnabled="true"
            app:helperTextTextColor="@android:color/black"
            app:helperTextTextAppearance="@style/TextAppearance.AppCompat.Caption"
            app:boxBackgroundColor="@android:color/white"
            app:counterEnabled="true"
            app:counterMaxLength="6"
            app:counterTextColor="@color/colorPrimary"
            app:prefixText="R$"
            app:prefixTextColor="@android:color/black">
            <com.google.android.material.textfield.TextInputEditText
                android:id="@+id/editPrecoAnuncio"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:inputType="numberSigned"
                android:maxLength="6" />
        </com.google.android.material.textfield.TextInputLayout>
        <com.google.android.material.textview.MaterialTextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginStart="4dp"
            android:text="Telefone do anunciante:"
            android:textAppearance="@style/TextAppearance.AppCompat.Light.SearchResult.Title" />
        <com.google.android.material.textfield.TextInputLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="Ex: 64999999999, apenas números"
            app:startIconDrawable="@drawable/fui_ic_phone_white_24dp"
            app:startIconTint="@color/colorPrimary"
            app:helperTextEnabled="true"
            app:helperTextTextColor="@android:color/black"
            app:helperTextTextAppearance="@style/TextAppearance.AppCompat.Caption"
            app:boxBackgroundColor="@android:color/white"
            app:counterEnabled="true"
            app:counterMaxLength="11"
            app:counterTextColor="@color/colorPrimary">
            <com.google.android.material.textfield.TextInputEditText
                android:id="@+id/numeroAnuncio"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:inputType="phone"
                android:maxLength="11" />
        </com.google.android.material.textfield.TextInputLayout>
    </LinearLayout>
    <androidx.constraintlayout.widget.ConstraintLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">
        <TextView
            android:id="@+id/textview_addAnuncio"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@android:color/white"
            android:backgroundTint="@android:color/white"
            android:padding="8dp"
            android:layout_gravity="bottom"
            android:fontFamily="@font/baumans"
            android:text="@string/avisoVenda"
            android:textColor="@android:color/black"
            android:textSize="13sp"
            android:textStyle="bold"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"/>
    </androidx.constraintlayout.widget.ConstraintLayout>
</LinearLayout>
</ScrollView>
android android-linearlayout android-scrollview scrollable
1个回答
0
投票

您必须添加另一个布局,将您的scrollView放置在其中。但是XML的结构不好。首先,您必须有2个LinearLayouts,第一个用于CardViews的水平ScrolView,第二个用于XML其余部分的垂直ScrolView。如果您需要更多帮助,请告诉我!


0
投票

[ScrollView在另一个ScrollView中的行为是不可预测的,您应该尝试NestedScrollingParent2和NestedScrollingChild2。

© www.soinside.com 2019 - 2024. All rights reserved.