2010-07-01 36 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