RelativeLayoutがあります:
<RelativeLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:orientation="horizontal"
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
Android:layout_marginTop="10dip">
<Button
Android:id="@+id/negativeButton"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:textSize="20dip"
Android:textColor="#ffffff"
Android:layout_alignParentLeft="true"
Android:background="@drawable/black_menu_button"
Android:layout_marginLeft="5dip"
Android:layout_centerVertical="true"
Android:layout_centerHorizontal="true"/>
<Button
Android:id="@+id/positiveButton"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:textSize="20dip"
Android:textColor="#ffffff"
Android:layout_alignParentRight="true"
Android:background="@drawable/blue_menu_button"
Android:layout_marginRight="5dip"
Android:layout_centerVertical="true"
Android:layout_centerHorizontal="true"/>
</RelativeLayout>
positiveButton
にプログラム的に設定できるようにしたい:
Android:layout_centerInParent="true"
これをプログラムで作成するにはどうすればよいですか?
完全にテストされていませんが、これはshould動作します:
View positiveButton = findViewById(R.id.positiveButton);
RelativeLayout.LayoutParams layoutParams =
(RelativeLayout.LayoutParams)positiveButton.getLayoutParams();
layoutParams.addRule(RelativeLayout.CENTER_IN_PARENT, RelativeLayout.TRUE);
positiveButton.setLayoutParams(layoutParams);
マニフェストのアクティビティ内にAndroid:configChanges="orientation|screenSize"
を追加します
Reuben応答から別のフレーバーを追加するために、次のように使用して、条件に応じてこのルールを追加または削除します。
RelativeLayout.LayoutParams layoutParams =
(RelativeLayout.LayoutParams) holder.txtGuestName.getLayoutParams();
if (SOMETHING_THAT_WOULD_LIKE_YOU_TO_CHECK) {
// if true center text:
layoutParams.addRule(RelativeLayout.CENTER_IN_PARENT);
holder.txtGuestName.setLayoutParams(layoutParams);
} else {
// if false remove center:
layoutParams.addRule(RelativeLayout.CENTER_IN_PARENT, 0);
holder.txtGuestName.setLayoutParams(layoutParams);
}