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.