2014-08-27 73 views
0

我有一个滚动视图里面有多个不同的视图。我想要的是除了最后一个元素填充整个屏幕之外,还有scrollview的所有元素。用户然后可以向下滚动显示滚动视图中的最后一项。我不希望在其他情况下显示最后一个项目。Android ScrollView - 确保它始终大于屏幕尺寸?

我的XML看起来是这样的:

<ScrollView 
    android:layout_width="fill_parent" 
    android:layout_height="0dp" 
    android:layout_weight="3.45" 
    android:fillViewport="true"> 
    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="fill_parent" 
     android:orientation="vertical"> 
     <View 1 ... android:weight="2.25" /> 
     <View 2 ... android:weight="0.8" /> 
     <View 3 ... android:weight="0.40" /> //last item 
    </LinearLayout> 
</ScrollView> 

目前这样做是完全充满整个屏幕,但没有最后一个项目推离。

+0

你可以动态设置两个第一视图的高度,获取设备高度并将其设置为第一个50%,第二个50%。但我建议您以其他方式实现此目的 – MHP 2014-08-27 16:20:15

+0

不要将'fill_parent'和'match_parent'在你的代码中。 'fill_parent'已被弃用,不应该使用 – 2014-08-27 16:25:51

+0

修复,@AlexanderZhak – 2014-08-27 16:32:10

回答

2

根据最后一篇文章(现在删除),您应该将最后一项放在LinearLayout组之外或放在不同的LinearLayout中。 这将是水木清华像

<ScrollView 
    android:layout_width="match_parent"<!-- added--> 
    android:layout_height="match_parent"><!-- added--> 
    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:oriention="vertical"><!-- added--> 
     <LinearLayout 
      android:id="@+id/visible_items" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content"><!-- changed--> 
      ...{items} 
     </LinearLayout> 
     <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content"> 
      {last item} 
     </LinearLayout> 
    </LinearLayout> 
<ScrollView> 

更新:现在你需要扩展的LinearLayout的高度,以填补屏幕:

WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE); 
     Display display = wm.getDefaultDisplay(); 
final Point point = new Point(); 
    try { 
     display.getSize(point); 
    } catch (java.lang.NoSuchMethodError ignore) { // Older device 
     point.x = display.getWidth(); 
     point.y = display.getHeight(); 
    } 

LinearLayout layout = (LinearLayout) findViewById(R.id.visible_items); 
LayoutParams lp = layout.getLayoutParams(); 
lp.height = point.y; 
layout.setLayoutParams(lp); 

注:onWindowFocusChanged把上面的代码()活动的methos

+0

这工作就像一个魅力,但我需要做更多的事情(为我的情况)。我有一个操作栏和一个静态页脚,它位于屏幕的底部,并且始终可见(即不是滚动视图的一部分)。所以,我这样做:'lp.height = point.y - getActionBar()。getHeight() - statusbarHeight;' – 2014-08-27 18:01:40

+0

高兴为您提供帮助:) – MHP 2014-08-27 18:16:35