169 похожих чатов

Всем привет. Подскажите, пожалуйста. В LinearLayout происходит такая ерунда после

перехода на следующий экран и возврата обратно. В какую сторону посоветуете копать, чтобы пофиксить этот баг?

Смотреть на верхние кнопки.
При этом в логах обе кнопки остаются Visible.
XML: http://pastie.org/p/5B0mpOYhFrce5SHhWcos71
Стили не влияют ни на что, я их убирал и получалось то же самое

19 ответов

15 просмотров

Ща телепаты дадут ответ по одной картинке без всякого хмл.

Azat Nabiullin
Так есть хмл

Обычный горизонтальный LinearLayout. Непонятно только, зачем у всех кнопок одинаковые веса. И ширина 0дп.

Azat-Nabiullin Автор вопроса
Leonid B.
Обычный горизонтальный LinearLayout. Непонятно тол...

Да, обычный LinearLayout, тем более непонятное для меня такое поведение Если не вводить веса и android:layout_width="wrap_content" или "0dp", то получается так, как на скрине. Мне нужно заполнить кнопками все свободное пространство, но справа остается другая кнопка без веса с фиксированными размерами.

Azat Nabiullin
Да, обычный LinearLayout, тем более непонятное для...

Может, положить это всё в горизонтальный ScrollView и дать кнопкам ширину wrap_content?

А где инклюд делается

Azat-Nabiullin Автор вопроса
Di7aK
А где инклюд делается

Нигде, это просто кусок более крупного XML файла. Но вообще решил проблему, не знал о такой особенности LinearLayout

Azat-Nabiullin Автор вопроса
Leonid B.
Может, положить это всё в горизонтальный ScrollVie...

Подозреваю, что-то не так с 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

Azat-Nabiullin Автор вопроса
Azat Nabiullin
вот такой 🔼

Мне такая особенность не встречалась, мб косяк не в нем

Azat Nabiullin
Подозреваю, что-то не так с measure детей внутри L...

Значит, так задана разметка, что её корёжит при определенных условиях.

Azat-Nabiullin Автор вопроса
Leonid B.
Значит, так задана разметка, что её корёжит при оп...

visibility тоже логгировал, обе кнопки visible, но одна из них занимает всего родителя при возврате назад. Или что вы имеете в виду под разметкой? Мне видится так: - В XML заданы изначальные visibility: у LL visible, у детей gone - Открываем экран в первый раз, все width=0 - В зависимости от условий сеттится видимость детей - Все обмеряется, задаются width - Открываем следующий экран, возвращаемся назад - У LL остается старая ширина с прошлого раза (1036), так как он visible. Снова проходимся по логике, сеттим видимость детей, все обмеряется и первый же измеренный ребенок почему-то занимает всю доступную ширину А если у родителя visibility в xml сделать gone и в конце показать, то уже всё норм

Я бы использовал ConstraintLayout. Мне кажется, что для LL это слишком сложно.

Azat-Nabiullin Автор вопроса
Leonid B.
Я бы использовал ConstraintLayout. Мне кажется, чт...

Да я пожалел уже. Раньше тут был констрейнт, но я решил что два вложенных LL подойдут лучше и переписал.

Azat Nabiullin
Да я пожалел уже. Раньше тут был констрейнт, но я ...

Лучший вариант, когда следует применять LL - вертикально расположенные элементы. В этом случае он самый быстрый и безглючный.

Azat Nabiullin
Да я пожалел уже. Раньше тут был констрейнт, но я ...

Я тоже LL везде пытался использовать с всевозможными вложенностями, не хотел иметь дело с привязками по началу, в подобной ситуации я бобавлял space с весом и 0dp в нужные места и все работало

Azat Nabiullin
Да, обычный LinearLayout, тем более непонятное для...

И получилось бы что в горизонтальном верхренм LL было бы две кнопки с 0dp по ширине и весами, за ними space с теми же параметрами и в конце кнопка с фиксированным размером, а дальше только падлинги расставить и с весами поиграть, но при всем этом у меня все что на экране это LL

Похожие вопросы

Обсуждают сегодня

30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
~ 2m21s  nix shell github:nixos/nixpkgs#stack ~  stack ghc -- --version error: … while calling the 'derivationStrict' builtin at /builtin/derivation.nix:...
Rebuild your mind.
6
Карта сайта