Android: почему нет maxHeight для просмотра? - PullRequest
163 голосов
/ 29 октября 2010

В представлениях есть minHeight, но почему-то не хватает maxHeight:

Я пытаюсь добиться того, чтобы некоторые элементы (представления) заполняли ScrollView,Когда есть элементы 1..3, я хочу отобразить их напрямую.Значение ScrollView имеет высоту 1, 2 или 3 элементов.

Когда есть 4 или более элементов, я хочу, чтобы ScrollView прекратил расширение (таким образом, maxHeight) и начал обеспечивать прокрутку..

Однако, к сожалению, нет способа установить maxHeight.Поэтому мне, вероятно, придется программно установить мою высоту ScrollView на WRAP_CONTENT при наличии элементов 1,3 и высоту на 3*sizeOf(View) при наличии 4 или более элементов.

Может кто-нибудь объяснитьпочему нет maxHeight, если уже есть minHeight?

(Кстати: в некоторых видах, например, ImageView, реализовано maxHeight.)

Ответы [ 14 ]

1 голос
/ 29 октября 2010

Вы пытались использовать значение layout_weight ?Если вы установите для него значение больше 0, оно будет растягивать это представление на оставшееся доступное пространство.

Если у вас было несколько видов, которые необходимо растянуть, тогда значение станет весом между ними.

Таким образом, если бы у двух представлений было установлено значение layout_weight, равное 1, они оба растянулись бы, чтобы заполнить пространство, но оба растянулись бы до одинакового пространства.Если вы установите для одного из них значение 2, оно растянется вдвое больше, чем другое представление.

Некоторая дополнительная информация приведена в разделе «Линейный макет».

0 голосов
/ 11 мая 2015

Если вы, ребята, хотите сделать прокрутку без просмотра или просмотр списка без переполнения, просто сделайте это с помощью RelativeLayout с видом сверху и снизу сверху и снизу:

<ScrollView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_above="@+id/topview"
    android:layout_below="@+id/bottomview" >
0 голосов
/ 05 марта 2015

Сначала получите высоту элемента в пикселях

View rowItem = adapter.getView(0, null, scrollView);   
rowItem.measure(0, 0);    
int heightOfItem = rowItem.getMeasuredHeight();

, затем просто

Display display = getWindowManager().getDefaultDisplay();    
DisplayMetrics displayMetrics = new DisplayMetrics();    
display.getMetrics(displayMetrics);    
scrollView.getLayoutParams().height = (int)((heightOfItem * 3)*displayMetrics .density);
0 голосов
/ 23 февраля 2012

Я думаю, вы можете установить heiht во время выполнения для 1 элемента просто scrollView.setHeight(200px), для 2 элементов scrollView.setheight(400px) для 3 или более scrollView.setHeight(600px)

...