Удалить правило из RelativeLayout - PullRequest
3 голосов
/ 19 августа 2011

У меня есть закладка ImageButton с ALIGN_WITH_PARENT , установленным на true в XML.

Если я запрограммирован (я хочу )удалить это правило )

RelativeLayout.LayoutParams params = (LayoutParams) bookmark.getLayoutParams(); 
params.addRule(RelativeLayout.ALIGN_PARENT_RIGHT, 0);
bookmark.setLayoutParams(params);

Правило просто не применяется (в моем макете я вижу, что правило все еще активно) -> макет не подходит.Если я сделаю это вручную (что-то вроде «симуляции», установите ALIGN WITH PARENT на false ) в моем редакторе макетов, мой макет в порядке, что приводит к появлению этого кода.Что-то не так.

Что?

Ответы [ 3 ]

0 голосов
/ 24 января 2013

Во время вызова setLayoutParams(), попробуйте использовать requestLayout() метод:

bookmark.requestLayout();

Из документов API:

Звоните, когда что-то изменилось, что сделало недействительным макет этого представления .Это запланирует проход макета дерева представления.

0 голосов
/ 12 апреля 2018

просто вызовите removeRule() функцию на params.

например,

params.removeRule(RelativeLayout.CENTER_IN_PARENT);
0 голосов
/ 19 августа 2011

(я считаю временным) Решение состоит в том, чтобы обернуть эту ImageButton в одну фиктивную RelativeLayout, а затем взять параметры этого фиктивного макета и добавить или удалить правила.Таким образом, он работает просто отлично.

...