【问题标题】:Android LinearLayout set layout_gravity in java code [closed]Android LinearLayout在java代码中设置layout_gravity [关闭]
【发布时间】:2013-01-21 03:24:58
【问题描述】:

我在这个布局上有问题:(

<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 没有重力。

【问题讨论】:

    标签: java android layout layout-gravity


    【解决方案1】:

    您所说的布局重力在LayoutParamsLinearLayout 对象内。因此,从逻辑上讲,要实现这一点,您必须遵循以下步骤:

    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 的类型。

    (ie 就像在@gincsait 的参考中一样,如果我在LinearLayout 中有一个Button,那么ButtonLayoutParams 将是LinearLayout.LayoutParams 类型。对于LayoutParamsLinearLayout,同样的不能说。)

    【讨论】:

      【解决方案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);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-03-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-07-27
        • 1970-01-01
        相关资源
        最近更新 更多