2011-08-03 48 views
0

大家好我正在爲Android做一款遊戲,我需要幫助在屏幕上放置一些視圖,使它們與屏幕成比例。考慮下面的XML代碼爲我的佈局:Android Development View Proportionality

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
       android:layout_width="fill_parent" 
       android:layout_height="fill_parent" 
       android:orientation="vertical"  
       android:background="@drawable/background"> 

<ImageView android:src="@drawable/logo" android:layout_height="wrap_content" android:layout_width="fill_parent" android:id="@+id/logo" ></ImageView> 

<FrameLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="2"> 
    <ScrollView android:layout_width="fill_parent" android:layout_height="wrap_content" android:id="@+id/buttons"> 
     <LinearLayout android:id="@+id/main_layout" android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="center_horizontal"> 
      <ImageView 
       android:paddingRight="15dp" 
       android:layout_height="wrap_content" 
       android:layout_width="wrap_content" 
       android:src="@drawable/menu_start_button" 
       android:id="@+id/start_button"> 
      </ImageView> 

      <ImageView 
       android:layout_height="wrap_content"      
       android:layout_width="wrap_content" 
       android:src="@drawable/menu_tutorial_button" 
       android:id="@+id/tutorial_button"> 
      </ImageView> 
     </LinearLayout> 
    </ScrollView> 

    <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical" android:gravity="bottom" android:layout_alignParentRight="true" android:id="@+id/option_buttons"> 
      <ImageView android:id="@+id/option_sound" android:src="@drawable/option_sound" android:layout_height="wrap_content" android:layout_width="wrap_content" android:paddingRight="5dp" android:paddingBottom="5dp"/> 
      <ImageView android:id="@+id/option_vibrate" android:layout_width="wrap_content" android:src="@drawable/option_vibrate" android:layout_height="wrap_content" android:paddingBottom="5dp" android:paddingRight="5dp"></ImageView> 
      <ImageView android:id="@+id/option_show_help" android:layout_width="wrap_content" android:src="@drawable/option_show_help" android:layout_height="wrap_content"android:paddingRight="5dp"></ImageView> 
    </LinearLayout> 
</FrameLayout> 

我想要的標識(ID爲logo)佔用了屏幕的頂部30%。 FrameLayout佔據了屏幕的底部30%,並在中間有兩個按鈕(包裝在ID爲buttons的ScrollView中)和三個應該在FrameLayout右側的選項按鈕(但由於某種原因,它在)左右對齊。 android:layout_weight不能幫我解決我的問題,因爲我希望這些視圖與屏幕成比例。那麼有沒有一個優雅的解決方案來解決我的問題,還是我需要做一些棘手的魔法?

回答

0

想通了。畢竟,我確實必須使用layout_weight屬性。我必須將父級的weightSum屬性設置爲1,然後將其所有子元素的layout_weight設置爲與上述weightSum成比例。例如,如果子元素必須是父級高度的50%,我將其layout_weight設置爲0.5,並將其layout_height屬性設置爲0dp。