[英]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”之間的區別。
設置LinearLayout
的gravity
本身會更改其中視圖的位置。 設置LinearLayout
的layout_gravity會更改LinearLayout
在其父布局中的排列方式。
此圖像顯示FrameLayout
(白色)內的LinearLayout
(棕色)。 LinearLayout
的gravity
設置為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>
以下代碼顯示如何更改LinearLayout
的gravity
和layout_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.