У меня есть 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"
Как я могу сделать это программно?
if (rules[CENTER_IN_PARENT] != 0 || rules[CENTER_HORIZONTAL] != 0) {
где0
эффективно оценивается,false
Чтобы добавить еще один оттенок из ответа Рувима, я использую его так, чтобы добавить или удалить это правило в соответствии с условием:
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); }
источник
Я сделал для
1. centerInParent
2. centerHorizontal
3. centerVertical
с истиной и ложью .private void addOrRemoveProperty(View view, int property, boolean flag){ RelativeLayout.LayoutParams layoutParams = (RelativeLayout.LayoutParams) view.getLayoutParams(); if(flag){ layoutParams.addRule(property); }else { layoutParams.removeRule(property); } view.setLayoutParams(layoutParams); }
Как вызвать метод:
centerInParent - истина
addOrRemoveProperty(mView, RelativeLayout.CENTER_IN_PARENT, true);
centerInParent - ложь
addOrRemoveProperty(mView, RelativeLayout.CENTER_IN_PARENT, false);
centerHorizontal - правда
addOrRemoveProperty(mView, RelativeLayout.CENTER_HORIZONTAL, true);
centerHorizontal - ложь
addOrRemoveProperty(mView, RelativeLayout.CENTER_HORIZONTAL, false);
centerVertical - истина
addOrRemoveProperty(mView, RelativeLayout.CENTER_VERTICAL, true);
centerVertical - ложь
addOrRemoveProperty(mView, RelativeLayout.CENTER_VERTICAL, false);
Надеюсь, это поможет вам.
источник