ListView inside ScrollView with DrawerLayout

I have a layout with a ScrollView that has a ListView inside. Everything works fine, but if I open DrawerLayout, ScrollView will scroll a bit. Take a look at these screenshots.

enter image description here

Here I open DrawerLayout

enter image description here

Then I close DrawerLayout. enter image description here

As you can see, this scrolls a bit. How to fix it? This is my xml:

<?xml version="1.0" encoding="utf-8"?> <android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/menuLayout" android:layout_width="match_parent" android:layout_height="match_parent" > <RelativeLayout xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" > <ProgressBar android:id="@+id/progressWheelBar" style="?android:attr/progressBarStyleLarge" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_centerVertical="true" /> <TextView android:id="@+id/noDataTextView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_centerVertical="true" android:text="@string/noData" android:textAppearance="?android:attr/textAppearanceSmall" android:visibility="gone" /> <LinearLayout android:id="@+id/actionBarLayout" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@color/transparent" android:orientation="vertical" > <RelativeLayout android:id="@+id/innerActionBarLayout" android:layout_width="match_parent" android:layout_height="55dp" android:background="@color/material_blue_500" > <ImageButton android:id="@+id/menuButton" android:layout_width="36dp" android:layout_height="36dp" android:layout_alignParentLeft="true" android:layout_centerVertical="true" android:layout_marginLeft="5dp" android:background="@null" android:src="@drawable/ic_menu_white_24dp" /> <TextView android:id="@+id/title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerVertical="true" android:layout_marginLeft="16dp" android:layout_toRightOf="@+id/menuButton" android:textColor="@color/white" android:textSize="18sp" /> </RelativeLayout> </LinearLayout> <ScrollView android:id="@+id/mainScrollView" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_below="@+id/actionBarLayout" android:fillViewport="true" android:scrollbars="none" > <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="vertical" > <!-- Here goes the frame layout with a listview inside --> <FrameLayout android:id="@+id/container" android:layout_width="match_parent" android:layout_height="match_parent" android:visibility="gone" tools:context="ru.tenet.ttk.MainActivity" /> </LinearLayout> </ScrollView> <RelativeLayout android:layout_width="match_parent" android:layout_height="2dp" android:layout_alignParentLeft="true" android:layout_below="@+id/actionBarLayout" android:background="@drawable/shadow_down" /> </RelativeLayout> <LinearLayout android:layout_width="250dp" android:layout_height="match_parent" android:layout_gravity="left|start" android:background="@color/white" android:orientation="vertical" android:clickable="true" > <ListView android:id="@+id/menuListView" android:layout_width="match_parent" android:layout_height="wrap_content" android:listSelector="@drawable/list_selector" android:layout_marginTop="15dp" android:divider="@null" /> </LinearLayout> </android.support.v4.widget.DrawerLayout> 
+6
source share
4 answers

It is difficult to give a definite answer because you have not posted your code. One reason may be that you have the parameter "windowActionBarOverlay = true" in your activity. Because of this setting, the content of activity starts right at the top of the page and lags behind the ActionBar.

Also, as commentators have already pointed out, do you really need a ListView inside a ScrollView? ListView itself is a ScrollView.

It’s best if you post your Box activity code and content activity.

0
source

A simple solution uses headerView - ListView.addHeaderView (); I think you do not need to use ScrollView and just add a container as a headerView

0
source

It is best to use a RecyclerView and define a title to show your title.

0
source

Assign DrawerListener DrawerLayout, and in the onDrawerClosed event, scroll scrollView up.

 mDrawer.setDrawerListener(new DrawerListener() { @Override public void onDrawerSlide(View view, float v) { } @Override public void onDrawerOpened(View view) { } @Override public void onDrawerClosed(View view) { mScrollView.fullScroll(ScrollView.FOCUS_UP); } @Override public void onDrawerStateChanged(int i) { } }); 
0
source

All Articles