Когда будут применяться MeasureSpec.UNSPECIFIED и MeasureSpec.AT_MOST?

Я немного запутался в MeasureSpec.UNSPECIFIED и MeasureSpec.AT_MOST . Я знаю, что когда match_parent или постоянное значение измерения задано как layout_width или layout_height , MeasureSpec.EXACTLY будет применяться при измерении вида.

Затем, как насчет MeasureSpec.UNSPECIFIED и MeasureSpec.AT_MOST ?

Я понимаю, что когда layout_width или layout_height настроено на wrap_content , будет применяться MeasureSpec.UNSPECIFIED , так как wrap_content означает, что высота или ширина представления могут быть любого размера в зависимости от содержимого. Но многие статьи говорят, что wrap_content означает MeasureSpec.AT_MOST . Поэтому я смущен. Я не знаю, когда следует применять MeasureSpec.AT_MOST .

Solutions Collecting From Web of "Когда будут применяться MeasureSpec.UNSPECIFIED и MeasureSpec.AT_MOST?"

Базовое определение размера представления выглядит следующим образом:

MeasureSpec.EXACTLY – представление должно быть именно таким количеством пикселей независимо от того, насколько он на самом деле хочет быть.

MeasureSpec.AT_MOST – вид может быть такого размера или меньше, если он будет меньше.

MeasureSpec.UNSPECIFIED – представление может быть любого размера, необходимого для показа содержимого, которое необходимо показать.

MeasureSpec.AT_MOST будет применяться к представлениям, которые были установлены в WRAP_CONTENT если родительский вид связан по размеру . Например, ваш родительский вид может быть привязан к размеру экрана. Это дети также будут привязаны к этому размеру, но это может быть не так уж и много. Таким образом, родительское представление установит MeasureSpec как AT_MOST который сообщает ребенку, что он может быть где угодно между 0 и размером экрана. Ребенок должен будет внести коррективы, чтобы убедиться, что он соответствует границам, которые были предоставлены.

В особых случаях границы не имеют значения. Например, ScrollView . В случае ScrollView высота дочерних представлений не имеет значения. Таким образом, он предоставит UNSPECIFIED детям, которые рассказывают детям, что они могут быть такими высокими, какими они должны быть. ScrollView будет обрабатывать чертеж и место размещения для них.