2010-07-01 62 views
0

的大小要问这个问题,最好的办法是提供一个例子,所以这里是:计算视图

<ScrollView> 
    <LinearLayout 
     android:id="@+id/main" 
     android:orientation="vertical" 
    > 
     <TextView 
      android:id="@+id/some_text" 
     /> 
     <LinearLayout 
      android:id="@+id/stretch_me" 
     /> 
     <Button 
      android:id="@+id/i_can_toggle" 
     /> 
     <TextView 
      android:id="@+id/toggle_me" 
      android:visibility="gone" 
     /> 
     <Button 
      android:id="@+id/finished" 
     /> 
    </LinearLayout> 
</ScrollView> 

这看起来非常简单,但是坚持...

1 )我希望stretch_me布局能够将屏幕上的所有剩余空间(我需要它的大小以便我可以从代码动态填充它)

2)我不能将main更改为RelativeLayout,因为我想使用i_can_toggle可以在toggle和visible之间切换toggle_me,但需要保持strech_me的大小和以前一样

3)改变toggle_me可见之前必须有没有滚动和成品按钮必须在屏幕的底部定位

现在我已经尝试了很多事情,最有前途的方法是这样的一个与一些编码(我想从代码设置stretch_me大小),但我无法从我的onCreate()方法(screen_height - view_height =剩余空间)获取视图的大小。

任何想法?

谢谢!

+0

一旦您在ScrollView中看到了视图,那么“屏幕的其余部分”就不再有用了。 stretch_me将足够伸展以适合其所有的孩子,并且ScrollView将根据需要允许滚动以显示所有内容。您确定要将整个布局作为一个单元滚动吗?还是试图将一些视图固定到屏幕底部,而其余内容会滚动到其上方的区域? – adamp 2010-07-01 22:17:06

回答

0

设置stretch_me有这些属性,使其占用空间

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

会发生什么变化? – LambergaR 2010-07-01 14:09:12

+0

它将视图测量两次,并填充其他视图剩余的空间 – ognian 2010-07-01 14:18:25

0

我想stretch_me布局 采取 屏幕

集上的所有剩余空间身高和体重参数为以下

android:layout_height="fill_parent" 
android:layout_weight="1" 

我需要它的大小

您可以使用onmeasure()来衡量的视图大小。 http://developer.android.com/reference/android/view/View.html#onMeasure(int,int)

@Override 
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec){ 
    super.onMeasure(widthMeasureSpec, heightMeasureSpec); 
    int widthSpec = MeasureSpec.getMode(widthMeasureSpec); 
    int width = MeasureSpec.getSize(widthMeasureSpec); 
    //Similarly for height 
} 
+0

我不认为我可以使用它,因为我在ScrollView – LambergaR 2010-07-01 14:33:58