Shalin
Shalin

Reputation: 424

Scrollbar does not scroll while using dynamically filled listview

I am not able to scroll in a scrollview which contains a listview and is filled dynamically as I get data from the webservice.

I am able to do scrolling in emulator through mouse wheel, but in avtual device I can not scroll the list.

The attributes of scrollview are

<ScrollView
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_marginTop="10dp"
    android:layout_weight="0.6"
    android:fillViewport="true"
    android:orientation="vertical"
    android:padding="6.0dip"
    android:scrollbarAlwaysDrawVerticalTrack="true"
    android:scrollbarFadeDuration="5000"
    android:scrollbarSize="20dp"
    android:scrollbarStyle="insideOverlay"
    android:scrollbars="vertical" >

    <LinearLayout
        android:id="@+id/linearLayout2"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:gravity="center_vertical"
        android:orientation="vertical"
        android:padding="2dp" >

        <ListView
            android:id="@+id/listbox_list"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_weight="599.84"
            android:minHeight="250dp" >
        </ListView>

    </LinearLayout>

</ScrollView>

Please help me soon

Upvotes: 0

Views: 983

Answers (3)

josephus
josephus

Reputation: 8304

by just looking at the layout_width and layout_height of your elements, it's clear that your scrollview will not scroll. unless you have a fixed height listview, never put a listview inside a scrollview (or in this case, a listview inside a layout that sits inside a scrollview).

Upvotes: 1

Jave
Jave

Reputation: 31846

I don't have any links to back this up right now, but it's not possible, and a well-known 'problem'. If you google a bit, or search here on SO, you'll find a number of topics covering this.

The problem arises in most cases when you have a scrolling view inside another scrolling view in the same direction. Consider the following example:

  • You have Two lists inside of a ScrollView.
  • Both lists are exactly one screen tall.

How do you scroll down to the second list?
When scrolling, how will your layout know if you are scrolling the list or the container?
This is basically the question that is the cause, and the only official solution is that it is as it should be, and there won't be a fix. Usually it is enough to have either a ListView or a ScrollView, but I have faced cases when you must have a listview in a scrollview (in my case a client wanted an iPhone-like datespinner in a scrolling page).
I solved it by using a FrameLayout, containing a custom ScrollView, and a ListView on top of that. Then in the code for the custom ScrollView, I added a line in the onScroll method that updated the top margin of the ListView, to psuh it upwards or downwards as the user scrolled. Surprisingly it worked.

NOTE: remember that:

  • The ListView handles its own scroll. If all you need is a scrolling list, you do not need a ScrollView.
  • If you need a layout with a list and space for buttons or other views, consider creating your layout so that the list only covers enough space for you to fit your other views below/above without scrolling.

Upvotes: 0

Shruti
Shruti

Reputation: 5591

Add following in your linear layout

android:scrollbars="vertical" android:scrollbarAlwaysDrawVerticalTrack="true"

Upvotes: 0

Related Questions