Android RelativeLayout programmatically Set "centerInParent" Android RelativeLayout programmatically Set "centerInParent" android android

Android RelativeLayout programmatically Set "centerInParent"


Completely untested, but this should work:

View positiveButton = findViewById(R.id.positiveButton);RelativeLayout.LayoutParams layoutParams =     (RelativeLayout.LayoutParams)positiveButton.getLayoutParams();layoutParams.addRule(RelativeLayout.CENTER_IN_PARENT, RelativeLayout.TRUE);positiveButton.setLayoutParams(layoutParams);

add android:configChanges="orientation|screenSize" inside your activity in your manifest


Just to add another flavor from the Reuben response, I use it like this to add or remove this rule according to a 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);    }


I have done for

1. centerInParent

2. centerHorizontal

3. centerVertical

with true and false.

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);}

How to call method:

centerInParent - true

addOrRemoveProperty(mView, RelativeLayout.CENTER_IN_PARENT, true);

centerInParent - false

addOrRemoveProperty(mView, RelativeLayout.CENTER_IN_PARENT, false);

centerHorizontal - true

addOrRemoveProperty(mView, RelativeLayout.CENTER_HORIZONTAL, true);

centerHorizontal - false

addOrRemoveProperty(mView, RelativeLayout.CENTER_HORIZONTAL, false);

centerVertical - true

addOrRemoveProperty(mView, RelativeLayout.CENTER_VERTICAL, true);

centerVertical - false

addOrRemoveProperty(mView, RelativeLayout.CENTER_VERTICAL, false);

Hope this would help you.