2013-02-06 22 views
2

我對這個佈局:(的Android的LinearLayout設置layout_gravity在Java代碼中

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/cuerpo" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_gravity="center_vertical" 
    android:orientation="vertical" > 
... 

在Java代碼中

LinearLayout cuerpo = (LinearLayout) findViewById(R.id.cuerpo); 

if(align){ 
    cuerpo.setGravity(Gravity.CENTER_VERTICAL); 
}else{ 
    cuerpo.setGravity(Gravity.NO_GRAVITY); 
} 

我需要layout_gravity是沒有重力的問題。

回答

8

您正在討論的佈局引力位於LinearLayout對象的LayoutParams之內。因此,從邏輯上,得到這個,你必須遵循以下步驟:

  1. 讓您LinearLayoutLayoutParams

  2. 如果你知道什麼LayoutParams應該是,你可以投他們(注意,這是基於的選擇,所以你必須確保它是正確的!)。

  3. 根據需要設置LayoutParamsgravity

所以在代碼,這將是:

ViewGroup.LayoutParams layoutParams = cuerpo.getLayoutParams(); // Step 1. 
LinearLayout.LayoutParams castLayoutParams = (LinearLayout.LayoutParams) layoutParams; // Step 2. 
castLayoutParams.gravity = Gravity.CENTER_VERTICAL; // Step 3. 

或者作爲一個簡單的襯墊,做一個所有步驟:

((LinearLayout.LayoutParams) cuerpo.getLayoutParams()).gravity = Gravity.CENTER_VERTICAL; 

請注意了:

我看不出你想要做什麼,但看起來不正確。該類型的LayoutParams不是View的類型,但你View是居住在Layout類型。

像@ gincsait的參考,如果我在一個LinearLayoutButton,那麼所述ButtonLayoutParamsLinearLayout.LayoutParams型的。同樣不能LinearLayoutLayoutParams說。)

-1

根據How to set layout_gravity programmatically?你應該寫:

LinearLayout cuerpo = (LinearLayout) findViewById(R.id.cuerpo);  
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
      LayoutParams.WRAP_CONTENT, LayoutParams.FILL_PARENT); 

if (align) { 
    params.gravity= Gravity.CENTER_VERTICAL; 
} else { 
    params.gravity= Gravity.NO_GRAVITY; 
} 
cuerpo.setLayoutParams(params); 
相關問題