2012-06-23 35 views
0

我想將我的LinearLayout(或視圖)調整爲與父級或其自身相關的維度。例如,我希望寬度爲父寬度的1/3。或者,高度應該與它自己的寬度相同。我不想使用任何常量,因此它適用於所有設備。動態設置線性佈局的相對維數

添加代碼:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    > 

    <LinearLayout android:id="@+id/ll_board" 
     android:gravity="center_horizontal" 
     android:orientation="horizontal" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"> 

    </LinearLayout> 
     ... 
</LinearLayout> 

代碼:

public class GMActivity extends Activity { 
    public void onCreate(Bundle savedInstanceState) { 
    LinearLayout board_layout = (LinearLayout)findViewById(R.id.ll_board); 
    // I wanted to resize board_layout here .. 
    // getParent().getWidth() returns 0 
    Log.d("gm", "layout: " + ((LinearLayout) board_layout.getParent()).getWidth()); 
    // .. 
    } 
} 

的getWidth()是給0是不是爲時過早呢?如果是,那麼稱呼這個地方的正確位置是什麼?

基本上我的意圖是使佈局的寬度成爲屏幕大小寬度的一小部分,高度與它自己的寬度相同。

回答

0

考慮佈局你的LinearLayout和其父它的另一個LinearLayout中:

獲取父的寬度:

int parentWidth = ((LinearLayout) layout.getParent()).getWidth(); 

獲取視圖的寬度:

int viewWidth = ((LinearLayout) layout).getWidth(); 

設置

view.setHeight(viewWidth); 
view.setWidth(parentWidth/3); 
+0

找到高度=寬度的解決方案(方形佈局)感謝Nuno,爲您的答案。 getWidth()給我0.我可能會在早期調用它。不知道應該在哪裏叫它。我編輯了我的問題以添加用於說明的代碼。 – devnull007

+0

內部佈局如何?它也返回0嗎?如果不這樣做,而不是調用getParent,請使用它的特定引用來獲取主佈局的寬度。因爲你知道這是主面板。 –

+0

是的,即使當前佈局也返回0 – devnull007