перехода на следующий экран и возврата обратно. В какую сторону посоветуете копать, чтобы пофиксить этот баг?
Смотреть на верхние кнопки.
При этом в логах обе кнопки остаются Visible.
XML: http://pastie.org/p/5B0mpOYhFrce5SHhWcos71
Стили не влияют ни на что, я их убирал и получалось то же самое
Ща телепаты дадут ответ по одной картинке без всякого хмл.
Обычный горизонтальный LinearLayout. Непонятно только, зачем у всех кнопок одинаковые веса. И ширина 0дп.
Да, обычный LinearLayout, тем более непонятное для меня такое поведение Если не вводить веса и android:layout_width="wrap_content" или "0dp", то получается так, как на скрине. Мне нужно заполнить кнопками все свободное пространство, но справа остается другая кнопка без веса с фиксированными размерами.
Может, положить это всё в горизонтальный ScrollView и дать кнопкам ширину wrap_content?
А где инклюд делается
Нигде, это просто кусок более крупного XML файла. Но вообще решил проблему, не знал о такой особенности LinearLayout
Какой особенности
Подозреваю, что-то не так с measure детей внутри LinearLayout. Залоггировал measuredWidth, почему-то при возврате назад btn1 занимает сразу всю доступную ширину и не оставляет места для btn2: // При первом входе на экран measuredWidth: LL: 0, btn1 0, btn2: 0 measuredWidth: LL: 1036, btn1 412, btn2: 382 // При возврате measuredWidth: LL: 1036, btn1 860, btn2: 0 measuredWidth: LL: 1036, btn1 860, btn2: 0 При открытии экрана видимость кнопок сеттится в зависимости от условий. Решил проблему костылем. Скрыл LinearLayout по умолчанию и в конце всей логики сеттю видимость LinearLayout, чтоб заставить его заново измериться: ll.isVisible = btn1.isVisible || btn2.isVisible || btn3.isVisible || editBtn.isVisible
вот такой 🔼
Мне такая особенность не встречалась, мб косяк не в нем
Значит, так задана разметка, что её корёжит при определенных условиях.
visibility тоже логгировал, обе кнопки visible, но одна из них занимает всего родителя при возврате назад. Или что вы имеете в виду под разметкой? Мне видится так: - В XML заданы изначальные visibility: у LL visible, у детей gone - Открываем экран в первый раз, все width=0 - В зависимости от условий сеттится видимость детей - Все обмеряется, задаются width - Открываем следующий экран, возвращаемся назад - У LL остается старая ширина с прошлого раза (1036), так как он visible. Снова проходимся по логике, сеттим видимость детей, все обмеряется и первый же измеренный ребенок почему-то занимает всю доступную ширину А если у родителя visibility в xml сделать gone и в конце показать, то уже всё норм
Я бы использовал ConstraintLayout. Мне кажется, что для LL это слишком сложно.
Да я пожалел уже. Раньше тут был констрейнт, но я решил что два вложенных LL подойдут лучше и переписал.
Лучший вариант, когда следует применять LL - вертикально расположенные элементы. В этом случае он самый быстрый и безглючный.
Я тоже LL везде пытался использовать с всевозможными вложенностями, не хотел иметь дело с привязками по началу, в подобной ситуации я бобавлял space с весом и 0dp в нужные места и все работало
И получилось бы что в горизонтальном верхренм LL было бы две кнопки с 0dp по ширине и весами, за ними space с теми же параметрами и в конце кнопка с фиксированным размером, а дальше только падлинги расставить и с весами поиграть, но при всем этом у меня все что на экране это LL
Надо будет поиграться, спасибо
Обсуждают сегодня