2011-03-01 71 views
2

我想在android中为ScrollView设置50%的屏幕高度,为ListView设置50%的屏幕高度。防止Android ListView占用几乎所有的屏幕高度

要做到这一点,我已经把每个的权重设置为“1”。

这样的:

<LinearLayout android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:orientation="vertical" 
       android:padding="10dip"> 


    <ScrollView android:layout_width="fill_parent" 
     android:layout_height="0dip" 
     android:layout_weight="1"> 

     <TableLayout android:id="@+id/my_table" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:shrinkColumns="0"> 

      <TableRow android:padding="5dip" 
     android:id="@+id/fault_heading" 
     android:layout_width="fill_parent" 
      android:layout_height="wrap_content"> 

      <TextView android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
     android:text="@string/table_title" 
     android:paddingRight="20dip"/> 

      </TableRow> 
      <!-- More rows are added at run time. --> 

     </TableLayout> 

    </ScrollView> 

    <ListView android:id="@+id/comments" 
       android:layout_width="fill_parent" 
       android:layout_height="0dip" 
      android:layout_weight="1"></ListView> 

</LinearLayout> 

当两个滚动型和ListView中有太多的内容显示不滚动这个完美的作品。

当ScrollView只需要20%的屏幕和ListView需要70%的ListView增长到70%,因此它可以不滚动显示。这不是我预期会发生的,但是很好。

我遇到的问题是,当ListView有这么多的数据,它需要整个屏幕显示和滚动视图只有1或2行数据。在这种情况下,ListView增长几乎占据了整个高度,并留下相当于滚动视图的大约一行文本的空间。

我似乎无法得知我的头如何保留ScrollView的一定比例的屏幕,无论ListView有多大。

p.s. ScrollView可以抓取的空间量似乎与其子表中的行数成正比。当这只有1时,滚动视图只有大约半厘米的高度。

+0

我不知道这是怎么回事为了解决这个问题,但是你不需要两个'LinearLayout'封装两个内部视图(权重在'LinearLayout'的任何子节点中工作),我会尝试将根布局的高度设置为'fill_parent'。 – bigstones 2011-03-01 15:37:22

+0

感谢您的信息。删除违规布局。但你说得很对,这并不能解决问题。 – rpcutts 2011-03-01 16:12:14

+0

你可以编辑这个问题来使用你的新布局吗? – 2011-03-01 16:17:07

回答

4

如何将android:layout_height更改为最小值而不是0dip

更新:由于每个解决方案下面的意见是设置外的LinearLayout有高度“FILL_PARENT”

+0

设置非0的高度值将视图的高度固定为该确切高度,而不是可用屏幕的一部分。我想我只需要给他们固定的高度,最适合屏幕。希望避免这样做,但这不是世界末日。 – rpcutts 2011-03-01 16:15:01

+1

您可能还需要将外部LinearLayout设置为具有fill_parent高度。 – 2011-03-01 16:16:09

+0

现货。将父LinearLayout高度更改为fill_parent使权重值具有我期待的效果。谢谢。 – rpcutts 2011-03-01 16:52:21

1

使用这些参数在ListView部分

android:layout_height="0dp" 
android:layout_weight="1" 
+0

根据问题中的代码示例,您提到的属性和值已经存在于ListView元素中。已经提供的解决方案是将LinearLayout的layout_height属性设置为fill_parent。 – rpcutts 2015-08-20 13:29:28

相关问题