I have a linear layout that is contained inside a relative layout. It is set in the XML file to be to the right of another linear layout (this works fine). In some cases I want to change the relative position of the layout during the onCreate of the activity so I need to modify the "to the right of" param to relate to another layout. I tryed this:
RelativeLayout.LayoutParams layoutParams;
layoutParams = (RelativeLayout.LayoutParams) linearLayoutToMove
.getLayoutParams();
layoutParams.addRule(RelativeLayout.RIGHT_OF,
R.id.new_ref_LinearLayout);
But it does not work :o(
Any clues ?
You can't remove a rule because all rules are always stored in a fixed-size java array. But you can set a rule to
0
. For exampleEDIT (thanks to Roger Rapid):
As of API level 17, the class
RelativeLayout.LayoutParams
has the following method:So you can remove a rule using the following line of code:
And you will get exactly the same result as when 'adding' a zero-rule as:
add the following code to your existing code
linearLayoutToMove.setLayoutParams(layoutParams)
I think this should do the job. In case if the above line dont work, try to call
linearLayoutToMove.invalidate()
after the above line.I think you need to call:
relativeLayout.updateViewLayout(linearLayoutToMove, layoutParams);
after changing the LayoutParams.
In reply to the edit, you can create new LayoutParameters using:
and then add your new rules. Then, update the layout parameters using the previously mentioned updateViewLayout() method.