片段内的滚动视图不滚动

scrollview inside a fragment is not scrolling

我是应用程序开发的新手。

我正在使用 3 个选项卡。在每个片段中,我想显示一个 cardview 列表(7-8 张卡片)。

我的第一个fragment.xml

<ScrollView
android:layout_height="fill_parent"
android:layout_width="match_parent"
android:fillViewport="true"

xmlns:android="http://schemas.android.com/apk/res/android" >

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:card_view="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:padding="10dp"
    android:background="@color/white">

    <android.support.v7.widget.CardView
        android:layout_width="match_parent"
        android:layout_height="300dp"
        android:id="@+id/crt1"
        card_view:cardUseCompatPadding="true"
        card_view:cardElevation="2dp"
        card_view:cardCornerRadius="1dp"
        android:clickable="true"
        android:foreground="?attr/selectableItemBackground">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:padding="3dp">

            <ImageView
                android:layout_width="85dp"
                android:layout_height="85dp"
                android:src="@drawable/c_3musketeers" />

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:gravity="center"
                android:orientation="vertical">
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="Three Musketeers"
                    android:textSize="25sp" />
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="Rare | Air + Ground"
                    android:textSize="15sp" />
            </LinearLayout>
        </LinearLayout>
    </android.support.v7.widget.CardView>
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Three Musketeers"
        android:textSize="25sp" />

    <android.support.v7.widget.CardView
        android:layout_width="match_parent"
        android:layout_height="300dp"
        android:id="@+id/crt2"
        card_view:cardUseCompatPadding="true"
        card_view:cardElevation="2dp"
        card_view:cardCornerRadius="1dp"
        android:clickable="true"
        android:foreground="?attr/selectableItemBackground">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:padding="3dp">

            <ImageView
                android:layout_width="85dp"
                android:layout_height="85dp"
                android:src="@drawable/c_archers" />

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:gravity="center"
                android:orientation="vertical">
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="Archers"
                    android:textSize="25sp" />
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="Common | Air + Ground"
                    android:textSize="15sp" />
            </LinearLayout>
        </LinearLayout>
    </android.support.v7.widget.CardView>

当我安装这个应用程序时,它根本不滚动。

我的fragment.java文件

public class TroopsFragment extends Fragment {

@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

    final ScrollView scrollview1 = (ScrollView) inflater.inflate(R.layout.troops,
            container, false);


    CardView cvt1;
    cvt1 = (CardView) scrollview1.findViewById(R.id.crt1);


    cvt1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Toast.makeText(getActivity(), "tushar kalsara",
                    Toast.LENGTH_SHORT).show();
        }
    });
    return scrollview1;
}}

在 ScrollView

中添加这个 属性

android:isScrollContainer="false"

并将 LinerLayout 设为

wrap_content

更改滚动视图的高度以包裹内容

及其用于包装内容的子布局

然后就可以了

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fillViewport="true" >

<LinearLayout
    xmlns:card_view="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@color/white"
    android:orientation="vertical"
    android:padding="10dp" >

    <android.support.v7.widget.CardView
        android:id="@+id/crt1"
        android:layout_width="match_parent"
        android:layout_height="300dp"
        android:clickable="true"
        android:foreground="?attr/selectableItemBackground"
        card_view:cardCornerRadius="1dp"
        card_view:cardElevation="2dp"
        card_view:cardUseCompatPadding="true" >

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:padding="3dp" >

            <ImageView
                android:layout_width="85dp"
                android:layout_height="85dp"
                android:src="@drawable/c_3musketeers" />

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:gravity="center"
                android:orientation="vertical" >

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="Three Musketeers"
                    android:textSize="25sp" />

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="Rare | Air + Ground"
                    android:textSize="15sp" />
            </LinearLayout>
        </LinearLayout>
    </android.support.v7.widget.CardView>

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Three Musketeers"
        android:textSize="25sp" />

    <android.support.v7.widget.CardView
        android:id="@+id/crt2"
        android:layout_width="match_parent"
        android:layout_height="300dp"
        android:clickable="true"
        android:foreground="?attr/selectableItemBackground"
        card_view:cardCornerRadius="1dp"
        card_view:cardElevation="2dp"
        card_view:cardUseCompatPadding="true" >

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:padding="3dp" >

            <ImageView
                android:layout_width="85dp"
                android:layout_height="85dp"
                android:src="@drawable/c_archers" />

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:gravity="center"
                android:orientation="vertical" >

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="Archers"
                    android:textSize="25sp" />

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="Common | Air + Ground"
                    android:textSize="15sp" />
            </LinearLayout>
        </LinearLayout>
    </android.support.v7.widget.CardView>
</LinearLayout>

这可能有用。 :)

永远不要将一个可滚动视图放在另一个可滚动视图中。 (在您的示例中,scrollview 中有 cardviews)。

但是,如果您仍然坚持这样做,请检查 。您可以在 cardviews

上设置固定高度

listviews也可以这样做。需要的话见this blog

在 ScrollView

中添加这个 属性

android:isScrollContainer="false"

并使LinearLayout成为

wrap_content

对片段视图使用嵌套滚动视图可以实现可滚动视图:

<androidx.core.widget.NestedScrollView
    android:layout_width="wrap_content"
    android:layout_height="match_parent">

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center_horizontal"
        android:orientation="vertical">