无法滚动listView

时间:2013-09-27 06:58:54

标签: android xml listview android-listview

我有一个xml文件,其中UI元素按以下顺序排列。我正在解析的数据正在listView上填充,但listView不可滚动。请帮助我

ImageView
TextView
imageView
ListView
imageView

layout.xml

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/scrollView_description"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:fillViewport="true"
    android:orientation="vertical" >

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#ffffff"
        android:focusableInTouchMode="true"
        android:orientation="vertical" >

        <ImageView
            android:id="@+id/imageView_now_playing"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentTop="true"
            android:scaleType="fitXY" />



        <TextView
            android:id="@+id/textView_DailyLimit"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@+id/imageView_now_playing"
            android:layout_centerHorizontal="true"
            android:layout_marginLeft="15dp"
            android:layout_marginRight="15dp"
            android:layout_marginTop="2dp"
            android:textAppearance="?android:attr/textAppearanceMedium" />

        <LinearLayout
            android:id="@+id/linearLayout1"
            android:layout_width="match_parent"
            android:layout_height="200dp"
            android:layout_below="@+id/button_PlayArea"
            android:layout_marginTop="20dp"
            android:background="#ffffff"
            android:orientation="vertical" >

            <ListView
                android:id="@+id/listViewEpisodes"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="10dp"
                android:cacheColorHint="#000000"
                android:divider="@android:color/black"
                android:dividerHeight="5dp"
                android:textColor="#000000" />
        </LinearLayout>

        <ImageView
            android:id="@+id/button_Characters"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@+id/linearLayout1"
            android:layout_marginTop="20dp"
            android:scaleType="fitXY"
            android:src="@drawable/gallery" />

        <ImageView
            android:id="@+id/button_PlayArea"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@+id/textView_DailyLimit"
            android:layout_marginTop="20dp"
            android:scaleType="fitXY" />
    </RelativeLayout>

</ScrollView>

5 个答案:

答案 0 :(得分:2)

Listview放在Scrollview内,你犯了一个大错误。移除Scrollview和用户RelativeLayout作为Top父级,Listview将滚动。

  

此外,UX建议永远不会在侧面使用两个可滚动项目   因为用户永远无法知道必须是什么   滚动。同样,您也无法识别用户是什么   试图滚动。

<强>建议


你可以做一件事。只需将您的TextView保留在Scrollview内部及其下方,即可保留listview但不要使整个布局可滚动。即两个元素可以滚动,但不能滚动整个屏幕。

答案 1 :(得分:1)

ListView lv = (ListView)findViewById(R.id.myListView);  // your listview inside scrollview
lv.setOnTouchListener(new ListView.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            int action = event.getAction();
            switch (action) {
            case MotionEvent.ACTION_DOWN:
                // Disallow ScrollView to intercept touch events.
                v.getParent().requestDisallowInterceptTouchEvent(true);
                break;

            case MotionEvent.ACTION_UP:
                // Allow ScrollView to intercept touch events.
                v.getParent().requestDisallowInterceptTouchEvent(false);
                break;
            }

            // Handle ListView touch events.
            v.onTouchEvent(event);
            return true;
        }
    });

答案 2 :(得分:0)

永远不要将listView放在scrollView中。从来没有。

观看他的精彩视频,了解更多abt listView

http://www.youtube.com/watch?v=wDBM6wVEO70

答案 3 :(得分:0)

在ScrollView内部不需要ListView使其可滚动,因为如果内容太长,ListView将是可滚动的。

答案 4 :(得分:0)

您可以将listview放在scrollview中。见https://stackoverflow.com/a/18354096/942224

并设置listview的这个值

yourListView.setExpanded(true);