scrollview inside a fragment is not scrolling

我与影子孤独终老i 提交于 2019-12-23 19:22:38

问题


i am new in app development.

i am using 3 tabs. in each fragment i want to display a list of cardview(7-8 cards).

my first 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>

when i install this ap it is not scrolling at all.

my fragment.java file

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;
}}

回答1:


Add this property in ScrollView

android:isScrollContainer="false"

and Make LinearLayout to

wrap_content




回答2:


Using a nested scrollview for fragment views does the trick for achieving scrollable views:

<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">



回答3:


Add this property in ScrollView

android:isScrollContainer="false"

and Make LinerLayout to

wrap_content




回答4:


You should never put a scrollable view inside another scrollable view. (in your example you have cardviews in scrollview).

However, if you insist on doing that anyway check this answer. You can set fixed heights on cardviews

It can be done also for listviews. See this blog if you need it




回答5:


change scrollview's height to wrap content

and its children layouts to wrap content

then it will work

<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>

this might work. :)



来源:https://stackoverflow.com/questions/35841730/scrollview-inside-a-fragment-is-not-scrolling

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!