Я согласен со многими ответами Четикампа, но я хочу высказать некоторые вещи.
Неясно, что должно произойти, когда цепочка является diff_inside, так как этот тип цепочки диктует, что конечные виджетыпридерживаться сторон.
Смещение применяется только в двух ситуациях:
- Для вида с фиксированным размером, который ограничен с обеих сторон
- Вкл.головка цепи с упакованной цепью
В случае разветвленной цепи смещение не оказывает влияния;другие ограничения переопределяют его.
Итак, виджет GONE должен по-прежнему участвовать в цепочке - его размеры равны нулю.
Это реальная проблема,Я вижу строку документации, которая гласит: «С точки зрения вычислений макета виджеты GONE все еще являются его частью», поэтому я понимаю, как вы это сделаете.
Однако ,Я думаю, что есть аргумент в другом направлении.Вместо цепочки из двух элементов представьте цепочку из трех.С головкой цепи VISIBLE
вы ожидаете увидеть
View1 <--- space ---> View2 <--- space ---> View3
Теперь, когда вы установите головку цепи на GONE
, что вы ожидаете?Я думаю, что большинство разработчиков предпочли бы это:
View2 <-------------- space --------------> View3
, чем это:
<----- space ----> View2 <----- space ----> View3
Если вы согласитесь, и вы думаете, что обычно разработчик Android будетскорее, посмотрите, как неподвижные VISIBLE
виды распределенной внутренней цепи будут сдвинуты к краям "как обычно", тогда я думаю, что логическим выводом этого аргумента является новое поведение, видимое в v1.1.3.
Я думаю, что документация должна быть обновлена, чтобы прояснить эту ситуацию.Либо GONE
представления участвуют в цепочке (просто как невидимая точка), или GONE
представления не участвуют в цепочке (за исключением случаев, когда атрибуты заголовка цепочки изменяют цепочку в целом).).