android layout_gravityとgravity

1503 ワード

LinearLayoutには2つの非常に似た属性があります.
android:gravityとandroid:layout_gravity.(RelativeLayoutにはandroid:layout_gravity属性はありません)
彼らの違いはandroid:gravity属性がそのviewの中の内容に対する限定である.例えばbuttonの上のtextである.このtextのviewに対する左、右などの位置を設定できます.android:layout_gravityは、そのviewが親viewに相対する位置を設定するために使用されます.例えばbuttonがlinearlayoutにある場合、そのbuttonをlinearlayoutの左、右などの位置に置くには、この属性設定を使用します.つまりandroid:gravityは、Viewコンポーネントに対するViewのコンテンツの位置合わせを設定するために使用され、android:layout_gravityでは、Containerに対するViewコンポーネントの位置合わせを設定します.
コード実装:
SDKを見ると、名前の通りButtonコンポーネントの文字の位置合わせを設定するためのsetGravityメソッドがあります.
LinearLayoutのLayoutParamsは、やはり発見されました.中にgravity属性があります.これは容器自体に対するコンポーネントの位置を設定するために使われていると信じています.
Button button  = new Button(this);  
button.setText("One");  
LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);  
//           Android:layout_gravity    
lp.gravity = Gravity.RIGHT;  
button.setLayoutParams(lp);  
//           Android:gravity    
button.setGravity(Gravity.CENTER);  
  
LinearLayout linear = new LinearLayout(this);  
//  ,  LinearLayout    ,            !         。  
linear.setOrientation(LinearLayout.VERTICAL);  
linear.addView(button);  
setContentView(linear);
RelativeLayoutでgravityプロパティを設定する
params = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);  
        params.addRule(RelativeLayout.CENTER_IN_PARENT);  
        mContainer.addView(progress,params);