Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can I make horizontally scrollable items in a vertical listview?

I would like to use horizontall scrolling items in a vertically scrolling Listview.

My naive take on this was to put the contents of the listview items inside a scrollView. The items are wider horizontally than the scrollview, but not higher than the scrollview. Since the listview is a normal vertically scrolling listview, I figured that dragging vertically would scroll in the list, while dragging horizontally would scroll in the items.

However that didn't work. The list scrolls fine vertically and shows the items correctly, but scrolling horizontally does not work (nothing happens). Unfortunately I am really not sure where to go from here.

Note that the items should scroll horizontally independently of the other items, i.e the whole list should not scroll sideways when dragging sideways.

As a reference, I would like the list to behave similar to what it does in the app 'Pulse', in case you have seen it.

like image 997
Mikael_S Avatar asked Jan 31 '11 14:01

Mikael_S


1 Answers

Make ordinary ListView with any adapter you like but design the item Layout something like this:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content">

    <HorizontalScrollView
        android:id="@+id/hor_scroll"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">

        <LinearLayout
            android:id="@+id/lin"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="horizontal">

            <ImageView
                android:id="@+id/icon"
                android:layout_width="wrap_content"
                android:layout_height="fill_parent"
                android:layout_marginRight="6.0dip"
                android:layout_alignParentTop="true"
                android:layout_alignParentBottom="true"
                android:focusable="false" />

            <TextView
                android:textAppearance="?android:textAppearanceMedium"
                android:gravity="center_vertical"
                android:id="@+id/text"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:singleLine="true"
                android:layout_toRightOf="@id/icon"
                android:layout_alignParentTop="true"
                android:layout_alignParentBottom="true" />

        </LinearLayout>

    </HorizontalScrollView>


</RelativeLayout>

You'll have Vertically Scrollable ListView with Horizontally Scrollable items. And the items are scrolled independantly from other items.

like image 180
Jilberta Avatar answered Sep 19 '22 12:09

Jilberta