J'ai un RelativeLayout comme ceci:
<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>
Je veux pouvoir programmer par programmation pour positiveButton
le même effet que:
Android:layout_centerInParent="true"
Comment puis-je faire cela par programmation?
Complètement non testé, mais ceci devrait fonctionne:
View positiveButton = findViewById(R.id.positiveButton);
RelativeLayout.LayoutParams layoutParams =
(RelativeLayout.LayoutParams)positiveButton.getLayoutParams();
layoutParams.addRule(RelativeLayout.CENTER_IN_PARENT, RelativeLayout.TRUE);
positiveButton.setLayoutParams(layoutParams);
ajouter Android:configChanges="orientation|screenSize"
à l'intérieur de votre activité dans votre manifeste
Juste pour ajouter une autre saveur de la réponse de Reuben, je l’utilise comme ceci pour ajouter ou supprimer cette règle selon une condition:
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);
}