如何以编程方式设置LinearLayout的重力和布局重力

Sur*_*gch 5 android gravity android-linearlayout layout-gravity

我冒着写一个重复的问题的风险,但当我正在研究另一个SO问题的答案时,我意识到我找不到一个简单的问题和答案,其中包括设置一个重力和layout_gravity LinearLayout.另外,在谈论一个ViewGroup而不仅仅是一个观点时,我对它们之间的区别感到困惑.我在回答下面的问题.

以下是我查看的其他一些问题:

Sur*_*gch 18

简短的回答

设定重力

linearLayout.setGravity(Gravity.CENTER);
Run Code Online (Sandbox Code Playgroud)

设置布局重力

// the LinearLayout's parent is a FrameLayout      
FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(400, 400);
params.gravity = Gravity.TOP|Gravity.RIGHT;
linearLayout.setLayoutParams(params);
Run Code Online (Sandbox Code Playgroud)

背景

以前,我已经解释了布局中视图的"gravity"和"layout_gravity"之间的区别.

设置gravity一个的LinearLayout本身的变化的范围内它的视图的位置.设置layout_gravity会LinearLayout更改LinearLayout在其父布局中的排列方式.

此图像显示LinearLayout(白色)内的FrameLayout(棕色).该LinearLayoutgravity设置为center_horizontal和它layout_gravity被设置为right|bottom.

在此输入图像描述

这是xml:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <LinearLayout
        android:id="@+id/llExample"
        android:layout_width="200dp"
        android:layout_height="200dp"
        android:layout_gravity="right|bottom"
        android:background="#e3e2ad"
        android:gravity="center_horizontal"
        android:orientation="vertical" >

        <TextView
            android:id="@+id/textView1"
            android:layout_width="100dp"
            android:layout_height="50dp"
            android:background="#bcf5b1"
            android:text="TextView 1" />

        <TextView
            android:id="@+id/textView1"
            android:layout_width="100dp"
            android:layout_height="50dp"
            android:background="#aacaff"
            android:text="TextView 2" />

    </LinearLayout>

</FrameLayout>
Run Code Online (Sandbox Code Playgroud)

以编程方式改变事物

下面的代码演示如何改变这两个gravitylayout_gravityLinearLayout.

public class LinearLayoutGravity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.linear_layout_gravity);

        // Change the gravity (not layout_gravity) of the LinearLayout
        LinearLayout ll = (LinearLayout) findViewById(R.id.llExample);
        ll.setGravity(Gravity.CENTER);

        // Change the layout_gravity (not gravity) of the LinearLayout      
        FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(400, 400);
        params.gravity = Gravity.TOP|Gravity.RIGHT;
        ll.setLayoutParams(params);
    }
}
Run Code Online (Sandbox Code Playgroud)

这是结果:

在此输入图像描述

也可以看看

  • 完美答案。你让我今天一整天都感觉很好。 (2认同)

归档时间:

查看次数:

15614 次

最近记录:

6 年,7 月 前