Android: ScrollView does not scroll

I am trying to create a layout with a title, a banner under it, and then a couple of ListView under the banner. I want the whole screen to be scrollable except for the title. Now I know that the ListView does not scroll in the ScrollView, so I set the height of the ListView large enough to show all the elements. The problem is that even after these changes, I see that the ListView scrolls independently, and the full screen does not scroll.

`

<include android:id="@+id/logo_header" android:layout_width="fill_parent" android:layout_height="wrap_content" layout="@layout/screen_header" /> <ScrollView android:layout_width="match_parent" android:layout_height="match_parent" android:fillViewport="true"> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <LinearLayout android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" android:layout_weight="0.8" android:background="#f2f2f2"> <include android:id="@+id/mcUser" android:layout_width="fill_parent" android:layout_height="fill_parent" layout="@layout/complaint_reporters_details" android:layout_weight="2" /> <LinearLayout android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="horizontal" android:weightSum="9" android:layout_weight="2"> <LinearLayout android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" android:weightSum="1" android:layout_weight="3" android:focusableInTouchMode="false" android:paddingLeft="30dp" android:paddingRight="30dp"> <ImageView android:id="@+id/mcShowList" android:layout_width="fill_parent" android:layout_height="fill_parent" android:gravity="center" android:layout_marginTop="5dp" android:layout_marginBottom="5dp" android:scaleType="fitXY" android:src="@drawable/list_icon" android:layout_weight="0.2" /> <TextView android:id="@+id/mcShowList_label" android:layout_width="fill_parent" android:layout_height="fill_parent" android:gravity="center" android:textStyle="bold" android:textSize="12sp" android:textColor="#929292" android:maxLines="1" android:text="List" android:layout_weight="0.8" android:layout_marginTop="-8dp" /> </LinearLayout> <LinearLayout android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" android:weightSum="1" android:layout_weight="3" android:gravity="center_vertical|center_horizontal" android:paddingLeft="30dp" android:paddingRight="30dp"> <ImageView android:id="@+id/mcShowMap" android:layout_width="fill_parent" android:layout_height="fill_parent" android:gravity="center" android:layout_marginTop="5dp" android:layout_marginBottom="5dp" android:scaleType="fitXY" android:src="@drawable/map_view" android:layout_weight="0.2"/> <TextView android:id="@+id/mcShowMap_label" android:layout_width="fill_parent" android:layout_height="fill_parent" android:gravity="center" android:textStyle="bold" android:textSize="12sp" android:textColor="#929292" android:maxLines="1" android:text="Map" android:layout_weight="0.8" android:layout_marginTop="-8dp" /> </LinearLayout> <LinearLayout android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" android:weightSum="1" android:layout_weight="3" android:focusableInTouchMode="false" android:paddingRight="30dp" android:paddingLeft="30dp"> <ImageView android:id="@+id/mcShowAnalytics" android:layout_width="fill_parent" android:layout_height="fill_parent" android:gravity="center" android:layout_marginTop="5dp" android:layout_marginBottom="5dp" android:scaleType="fitXY" android:src="@drawable/analytics_icon" android:layout_weight="0.2" /> <TextView android:id="@+id/mcShowAnalytics_label" android:layout_width="fill_parent" android:layout_height="fill_parent" android:gravity="center" android:textStyle="bold" android:textSize="12sp" android:textColor="#929292" android:maxLines="1" android:text="Analytics" android:layout_weight="0.8" android:layout_marginTop="-10dp" /> </LinearLayout> </LinearLayout> </LinearLayout> <RelativeLayout android:layout_weight="0.2" android:layout_width="fill_parent" android:layout_height="400dp"> <FrameLayout android:id="@+id/mcMapContainer" android:layout_width="match_parent" android:layout_height="fill_parent"/> <LinearLayout android:id="@+id/mcAnalyticsContainer" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="fill_parent"> <FrameLayout android:id="@+id/mcChartContainer" android:layout_gravity="center" android:layout_width="200dp" android:layout_height="200dp"/> <GridView android:id="@+id/mcAmenityList" android:layout_height="0dp" android:layout_weight="7" android:layout_width="match_parent" android:numColumns="3"/> </LinearLayout> <LinearLayout android:id="@+id/mcListContainer" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="wrap_content" android:weightSum="1"> <TextView android:text="Open Complaints" android:textColor="@color/red_btn_bg_color" android:textSize="18dp" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center_vertical|center_horizontal" android:padding="5dp" /> <ListView android:id="@+id/mcListOpen" android:layout_width="match_parent" android:layout_height="wrap_content"/> <TextView android:text="Closed Complaints" android:textColor="@color/red_btn_bg_color" android:textSize="18dp" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center_vertical|center_horizontal" android:padding="5dp" /> <ListView android:id="@+id/mcListClosed" android:layout_width="match_parent" android:layout_height="wrap_content"/> </LinearLayout> </RelativeLayout> </LinearLayout> </ScrollView> 

`

+6
source share
4 answers

Change the scroll view height from match_parent to wrap_content. Because the scroll view only allows scrolling if its overall height is greater than the height of the parent view. those. replace

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

using this code:

 <ScrollView android:layout_width="match_parent" android:layout_height="wrap_content" android:fillViewport="true"> 
+7
source

I have used several methods several times in several applications. I use a special subclass of ListView:

 package com.yourcompany.appname.views; import android.content.Context; import android.util.AttributeSet; import android.view.ViewGroup; import android.widget.ListView; public class NonScrollableListView extends ListView { public NonScrollableListView(Context context) { super(context); } public NonScrollableListView(Context context, AttributeSet attrs) { super(context, attrs); } public NonScrollableListView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { int heightMeasureSpec_custom = MeasureSpec.makeMeasureSpec( Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST); super.onMeasure(widthMeasureSpec, heightMeasureSpec_custom); ViewGroup.LayoutParams params = getLayoutParams(); params.height = getMeasuredHeight(); } } 

Then in your layout, instead of using it's use something like this:

 <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical"> <com.yourcompany.appname.views.NonScrollableListView android:id="@+id/listId" android:layout_width="match_parent" android:layout_height="wrap_content" /> </LinearLayout> 

Hope this helps!

+2
source

You can try this,

  listView.setOnTouchListener(new OnTouchListener() { public boolean onTouch(View v, MotionEvent event) { if (event.getAction() == MotionEvent.ACTION_MOVE) { return true; } return false; } }); 
0
source

put the list list in another xml and include it as shown below

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent"> <include layout="@layout/show_message_header" /> <ScrollView android:id="@+id/myscrollview_Show_message" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="@dimen/header" android:fadingEdge="none" android:fillViewport="false" android:paddingRight="0dp" android:scrollbarAlwaysDrawVerticalTrack="false" android:scrollbarSize="0dp" android:scrollbarStyle="insideOverlay" android:scrollbars="none" > <TableLayout android:id="@+id/Show_message_dynamic_table" android:layout_width="match_parent" android:layout_height="fill_parent" > <include layout="@layout/desinglayoutforlistviewincludehere" /> </TableLayout> </ScrollView> 

0
source

Source: https://habr.com/ru/post/980423/


All Articles