如何在不使用Scrollview的情况下使LinearLayout可滚动

时间:2011-11-29 06:15:24

标签: android

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    style="@style/bag" 
    android:layout_height="fill_parent" android:layout_width="fill_parent"
    android:orientation="vertical" >

<RelativeLayout
        android:id="@+id/relativeLayout2"
            style="@style/relbag"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content">

        <TextView style="@style/CodeFont" 
        android:layout_height="wrap_content" 
        android:layout_width="wrap_content"
        android:layout_marginLeft="25dp"
        android:layout_marginTop="18dp"
        android:textSize="15dp"
        android:text="General Preference"
        android:id="@+id/genpref">
        </TextView>


    <ListView
        android:id="@+id/settingsListView1"
        style="@style/listbag"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="15dip"
        android:layout_marginRight="15dip"

        android:background="@drawable/radius"
        android:listSelector="@drawable/list_selector"
        android:paddingTop="8dip"
        android:paddingBottom="8dip" 
        android:scrollbars="none"
        android:layout_below="@id/genpref"/>

        <TextView style="@style/CodeFont" 
        android:id="@+id/notpref"
        android:layout_height="wrap_content" 
        android:layout_width="wrap_content"
        android:layout_marginLeft="25dp"
        android:layout_marginTop="25dp"
        android:textSize="15dp"
        android:text="Notification Preference"
        android:layout_below="@id/settingsListView1">
        </TextView>


        <ListView style="@style/listbag" android:id="@+id/settingsListView2" android:layout_width="fill_parent"
         android:layout_height="fill_parent"
            android:layout_marginLeft="15dip" android:layout_marginRight="15dip" 
              android:layout_marginBottom="15dip" 
        android:background="@drawable/radius" 
                android:paddingLeft="5dip" android:paddingRight="5dip" 
            android:paddingTop="15dip" android:paddingBottom="15dip" 
            android:listSelector="@drawable/list_selector" 
            android:layout_below="@id/notpref" 
            android:scrollbars="none"
            />
            </RelativeLayout>
</LinearLayout>

enter image description here

在我的应用程序中,我想在linearlayout中创建两个listview,并且不使用ScrollView使linearlayout可滚动。据我所知,scrollview在使用listview时遇到了问题。这张照片并不是我想要的,但让我们假装下面列表视图中有另一个列表视图。所以我想显示listview的所有可用项目(在我的app 2 listview的项目中)并使LinearLayout可滚动。 ScrollView不能正常运行,因为它必须只有一个直接子项。我找不到解决方案。所以请帮我解决,谢谢

4 个答案:

答案 0 :(得分:7)

我不认为将多个列表放在一个屏幕上是个好主意becoz touch会变得很奇怪,使用屏幕会变得很复杂。你应该考虑别的东西在一个屏幕上一起显示多个列表。你可以水平排列多个在单个屏幕中列出.Romain Guy(Google开发人员)也在以下链接中接受这一事实....

http://groups.google.com/group/android-developers/browse_thread/thread/77acd4e54120b777

我希望这个答案可以帮助你解决问题。

答案 1 :(得分:0)

将LinearLayout用作ScrollView的子项,并将ListView作为子项放置到LinearLayout。

答案 2 :(得分:0)

我认为这是你的解决方案,

您无需在ScrollView中使用LinearLayout

layout_weight

的子视图(在您的情况下是两个列表视图)中使用LinearLayout参数

由于layout_weightRelativeLayout param不可用,您需要使用LinearLayout进行更改。

你可以这样做,

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    style="@style/bag" 
    android:layout_height="fill_parent" android:layout_width="fill_parent"
    android:orientation="vertical" >

<LinearLayout
        android:id="@+id/relativeLayout2"
            style="@style/relbag"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
    android:orientation="vertical">

        <TextView style="@style/CodeFont" 
        android:layout_height="wrap_content" 
        android:layout_width="wrap_content"
        android:layout_marginLeft="25dp"
        android:layout_marginTop="18dp"
        android:textSize="15dp"
        android:text="General Preference"
        android:id="@+id/genpref">
        </TextView>


    <ListView
        android:id="@+id/settingsListView1"
        style="@style/listbag"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_weight="1"
        android:layout_marginLeft="15dip"
        android:layout_marginRight="15dip"
        android:background="@drawable/radius"
        android:listSelector="@drawable/list_selector"
        android:paddingTop="8dip"
        android:paddingBottom="8dip"/>

        <TextView style="@style/CodeFont" 
        android:id="@+id/notpref"
        android:layout_height="wrap_content" 
        android:layout_width="wrap_content"
        android:layout_marginLeft="25dp"
        android:layout_marginTop="25dp"
        android:textSize="15dp"
        android:text="Notification Preference">
        </TextView>


        <ListView style="@style/listbag" 
        android:id="@+id/settingsListView2" 
        android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_weight="1"
                android:layout_marginLeft="15dip" 
        android:layout_marginRight="15dip" 
                android:layout_marginBottom="15dip" 
            android:background="@drawable/radius" 
                android:paddingLeft="5dip" android:paddingRight="5dip" 
                android:paddingTop="15dip" android:paddingBottom="15dip" 
                android:listSelector="@drawable/list_selector"/>

     </LinearLayout>
</LinearLayout>

用上面的方法改变你的xml ..我没有测试过,所以他们可能是一些愚蠢的params错误,你可以轻松解决..

答案 3 :(得分:0)

我用过这个并帮助了我

ListAdapter listAdapter = listView.getAdapter();
int rows = listAdapter.getCount();
int height = 60 * rows; // Insert the general cell height plus the dividers.

ViewGroup.LayoutParams params = listView.getLayoutParams();
params.height = height;
listView.setLayoutParams(params);
listView.requestLayout();

希望也帮助你