簡體   English   中英

如何以編程方式設置LinearLayout的重力和布局重力

[英]How to set both gravity and layout gravity of a LinearLayout programatically

我冒着寫一個重復的問題的風險,但在我研究另一個SO問題的答案時,我意識到我找不到一個簡單的問題和答案,其中包括設置LinearLayout gravity和abstract_gravity。 另外,在談論ViewGroup而不僅僅是一個視圖時,我對它們之間的區別感到困惑。 我在回答下面的問題。

以下是我查看的其他一些問題:

簡短的回答

設定重力

linearLayout.setGravity(Gravity.CENTER);

設置布局重力

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

背景

以前, 我已經解釋了布局中視圖的“gravity”和“layout_gravity”之間的區別。

設置LinearLayoutgravity本身會更改其中視圖的位置。 設置LinearLayout的layout_gravity會更改LinearLayout在其父布局中的排列方式。

此圖像顯示FrameLayout (白色)內的LinearLayout (棕色)。 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>

以編程方式改變事物

以下代碼顯示如何更改LinearLayoutgravitylayout_gravity

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);
    }
}

這是結果:

在此輸入圖像描述

也可以看看

如果您使用KOTLIN使用or運算符如下:

GRAVITY = Gravity.RIGHT or Gravity.CENTER_VERTICAL

frameContainer.layoutParams = FrameLayout.LayoutParams(FrameLayout.LayoutParams.WRAP_CONTENT,
                     FrameLayout.LayoutParams.WRAP_CONTENT,
                     GRAVITY)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM