Android LinearLayout在java代码中设置layout_gravity

时间:2013-02-06 02:08:13

标签: java android layout 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" >
...

在java代码中

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

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

我需要layout_gravity没有引力。

2 个答案:

答案 0 :(得分:8)

您正在讨论的布局重力位于LayoutParams对象的LinearLayout范围内。所以,从逻辑上讲,要实现这一目标,您必须遵循以下步骤:

  1. 获取LayoutParams的{​​{1}}。

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

  3. 根据需要设置LayoutParams的{​​{1}}。

  4. 所以在代码中这将是:

    gravity

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

    LayoutParams

    请注意:

    我无法确切地看到你想要做什么,但这似乎不正确。 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的类型。

    ,如@ gincsait的参考资料,如果我在Layout中有View,那么Button的{​​{1}}就会属于LinearLayout类型。对于LayoutParams的{​​{1}},不能

答案 1 :(得分:-2)

根据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);