2011-12-01 49 views
0

我有一个活动,其中有一个列表视图,该列表视图用xml文件中的首选项填充,然后是另一个由数据库中的数据填充的listview,然后是textview和edittext。Android:自定义列表视图的可滚动首选项窗口

我希望屏幕上的每个元素(包括所有列表视图)都达到其全高,并且整个屏幕都可以滚动,但我无法弄清楚如何做到这一点!

下面是我的xml:

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

    <LinearLayout 
     android:id="@+id/llContainer" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:orientation="vertical" > 

     <LinearLayout 
      android:id="@+id/llPreferences" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:orientation="vertical" > 

      <ListView 
       android:id="@android:id/list" 
       android:layout_width="fill_parent" 
        android:layout_height="wrap_content"> 
      </ListView> 
     </LinearLayout> 

     <LinearLayout 
      android:id="@+id/llPlaces" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:orientation="vertical" 
      android:weightSum="1" > 

      <TextView 
       android:id="@+id/textView1" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="TextView" 
       android:textAppearance="?android:attr/textAppearanceLarge" > 
      </TextView> 

      <ListView 
       android:id="@+id/lstPlaces" 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" > 
      </ListView> 

      <LinearLayout 
       android:id="@+id/llAddNewPlace" 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:orientation="vertical" > 

       <EditText 
        android:id="@+id/txtNewPlaceName" 
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content" > 
       </EditText> 

       <Button 
        android:id="@+id/btnAddNewPlace" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:text="Add New" > 
       </Button> 
      </LinearLayout> 
     </LinearLayout> 
    </LinearLayout> 

</ScrollView> 

为什么,因为我想和所期望的,这是不执行任何想法?

谢谢, 最大。

回答

0

那么,首先,真的没有理由将您的ListView封装在线性布局内部的线性布局中。实际上,没有理由将任何视图封装在两个LinearLayouts中。试试这个,看看会发生什么:

<?xml version="1.0" encoding="utf-8"?> 

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/scrollView1" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" android:fillViewport="true" > 

    <LinearLayout 
     android:id="@+id/llContainer" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:orientation="vertical" > 

     <ListView 
      android:id="@android:id/list" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content"> 
     </ListView> 

     <TextView 
      android:id="@+id/textView1" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="TextView" 
      android:textAppearance="?android:attr/textAppearanceLarge" > 
     </TextView> 

     <ListView 
      android:id="@+id/lstPlaces" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" > 
     </ListView> 

     <EditText 
      android:id="@+id/txtNewPlaceName" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" > 
     </EditText> 

     <Button 
      android:id="@+id/btnAddNewPlace" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="Add New" > 
     </Button> 

    </LinearLayout> 

</ScrollView> 
+0

谢谢,试过以上,其结果是每个元素占用正确的高度,但由于某种原因,scrollview不可滚动。尽管事实上EditText和Button不在屏幕上,滚动从字面上看没有任何意义......任何其他想法? –

+0

尝试将ScrollView的android:orientation设置为vertical?我遇到了与我正在开发的最新应用程序相同的问题,我认为这解决了问题。我可能是错的,我会尽我所能检查我的来源,并回复你。 –

+0

很酷,谢谢:) –

0

不要把一个ListView滚动型里面,因为有两个嵌套的滚动容器来区分没有什么好办法。

+0

为什么?上面的有点作品...第二个滚动视图是可滚动的,但只在边缘,即暗示拖动手势不是在列表视图上捕获的 –

+0

如果工作,你的意思是它们的布局被渲染并且不会崩溃,是的,但正如我所说,因为ListView和ScrollView都是可滚动的,所以你可能会有奇怪的行为,因为它们会竞争滚动。我只是认为这样的体验对于一些用户来说可能不好,例如,屏幕很小或手指粗大等等。 – gwa

+0

事实上,ScrollView的第一条规则是不嵌套ScrollView或ListView –

相关问题