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

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

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

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

19 ответов

6 просмотров

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

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

Azat-Nabiullin Автор вопроса

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

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

Всем привет, написал код ниже, но он выдает сегфолт, в чем причина? #include <stdio.h> #include <stdlib.h> #include <string.h> struct product { char *name; float price; };...
buzz базз
75
Хотел бы спросить у знающих, правильную ли я выбрал книгу для начала изучения ассемблера Юрова В.И ? Или есть более лучшие книги для начала обучения?
Botsman
31
$params = [ 'formid' => 'feedbackForm', 'formTpl' => '@CODE: <form class="form-validate" data-id="ajax_form"> <fieldset class="margin-bottom-md"> ...
Pathologic
1
Где можно найти примеры эффективного "асинхронного" tcp сервера на C? Я видел select, kqueue, poll, epoll и т.д. Ввод-вывод неблокирующий, но обработка клиентов блокирующая
#
10
Книга Юрова В.И пойдёт для обучения?
Botsman
24
Всем доброго дня, ребят подскажите пожалуйста, если в курсе по ассемблеру используется MASM32, могу ли я использовать FASM? В чем явная разница и будет ли у меня все работать?
Botsman
17
Hi Everyone! To all Are you Looking for Interview Support at the Lowest Price? Look no further! Then contact us 👉We offer Interview Support :-for a low cost variety of tech...
Rambabu Nallamilli
3
Hello experts, Could someone kindly tell me how to run vacuum inside a plpgsql function? If you have any link please share. Thank you
Amol Palav
10
И ещё вопрос: можно ли типа как на дос как-то запариться и с помощью прерываний выводить текст, вместо функции printf ?
НѣкъиⰘижєжєиꙁъвьсєсвѣтьноѣсѣтиѥсть•
34
А как лучше конвертировать физический адрес в виртуальный при маппинге? В случае ядра у меня, например, direct mapping, первые 768МБ я как есть мапплю в higher half, а остальн...
Evg Resh
7
Карта сайта