Android LinearLayout在java代码中设置layout_gravity

e-i*_*128 2 java layout android layout-gravity

我在这个布局上遇到了问题:(

<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" >
...
Run Code Online (Sandbox Code Playgroud)

在java代码中

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

if(align){
   cuerpo.setGravity(Gravity.CENTER_VERTICAL);
}else{
   cuerpo.setGravity(Gravity.NO_GRAVITY);
}
Run Code Online (Sandbox Code Playgroud)

我需要layout_gravity没有引力.

B T*_*B T 8

你所谈论的布局重心是内部LayoutParams的的LinearLayout对象.所以,从逻辑上讲,要实现这一目标,您必须遵循以下步骤:

  1. 得到LayoutParams你的LinearLayout.

  2. 如果你知道LayoutParams应该是什么,你可以施展它们(注意,这是基于你的选择,所以你必须确保它是正确的!).

  3. 设置gravityLayoutParams,你的愿望.

所以在代码中这将是:

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

或者作为一个简单的一个班轮,完成所有步骤:

((LinearLayout.LayoutParams) cuerpo.getLayoutParams()).gravity = Gravity.CENTER_VERTICAL;
Run Code Online (Sandbox Code Playgroud)

请注意:

我无法确切地看到你想要做什么,但这似乎不正确.该类型LayoutParams是不是的类型View,但类型Layout,你View是方式支付.

(比如在@ gincsait的引用中,如果我有一个Buttonin LinearLayout,那么LayoutParamsthe Button将是类型LinearLayout.LayoutParams.同样不能LayoutParamsLinearLayout.)