Почему maxWidth на кнопке не работает и как ее обойти?
У меня есть две кнопки на макете, и на устройстве с большим экраном (планшеты) я хочу закрыть их ширину, чтобы они не выглядели смешно. Я ожидал использовать атрибут maxWidth, но он, по-видимому, ничего не делает в моем сценарии. Вот определение макета-кнопки используют всю ширину макета, игнорируя любое значение в maxWidth.
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
>
<Button
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:maxWidth="100dp"
android:text="Button 1"
/>
<Button
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:maxWidth="100dp"
android:text="Button 2"
/>
</LinearLayout>
почему и как обойти это (по-видимому, сумасшедшее) ограничение?
4 ответов
удалить android:layout_weight="1"
линии с обеих кнопок.
добавить android:minWidth="50dp"
и android:layout_width="wrap_content"
EDIT:
вам нужно рассчитать размеры кнопок вручную в зависимости от размера экрана. Сначала вам нужно установить стандартный размер экрана. Например, если вы разрабатываете приложение на ширине экрана 400px, а кнопка имеет ширину 100px, то формула для поддержания того же button width to screen width
соотношение на всех устройствах будет следующим
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
buttonWidth = 100 * (metrics.widthPixels/400);
случае использовать :
если ширина экрана = 480px, то ширина кнопки должна быть 120px.
на хороший способ решения этого заключается в создании нескольких макетов для различной комбинации разрешения экрана. Когда вы получите максимальную растяжку, создайте новый макет с фиксированным значением там, где это необходимо. См. раздел "использовать псевдоним макета" в http://developer.android.com/training/multiscreen/screensizes.html#TaskUseAliasFilters
ширина / высота, похоже, всегда должны быть установлены вместе.. Это работает на мой взгляд
<Button
android:text="Center"
android:layout_width="100dp"
android:layout_height="fill_parent"
android:id="@+id/selectionCenterButton"
android:minWidth="50dp"
android:minHeight="50dp"
android:maxWidth="100dp"
android:maxHeight="50dp"
android:layout_weight="1" />
родитель кнопки настроен на перенос содержимого, поэтому масштабируется вниз, но не более 400 в ширину (4 кнопки)