Intereting Posts
EditText задает начало текста 10dp с левой границы Android: загрузка растрового изображения альфа-маски Как создать новый проект Android в eclipse и поделиться им в локальном репозитории git? Как отправить синтезированный MotionEvent через систему? Environment.getExternalStorageDirectory не возвращает путь к съемному хранилищу Действительно ли фрагментам нужен пустой конструктор? Использовать плагин Android DataBinding параллельно плагину GoogleServices Android: сохранение файла из существующего URI Cordova phonegap с использованием внешней веб-страницы в приложении, сохраняя верхний / нижний колонтитул (для навигации) Андроид, предоставляющий различные доступные ресурсы для ориентации Удаление данных из ArrayList с помощью цикла For-loop Как установить поля в пользовательский диалог? Как я могу взаимодействовать с элементами за прозрачным Android-приложением? Драйвер не смог установить безопасное соединение с SQL Server с использованием шифрования Secure Sockets Layer (SSL) Как отправить SMS на Android

Почему 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> 

Почему и как обходиться с этим (по-видимому, сумасшедшим) ограничением?

Solutions Collecting From Web of "Почему maxWidth на кнопке не работает и как его обойти?"

Удалите android:layout_weight="1" с обеих кнопок.
Добавить android:minWidth="50dp" и android:layout_width="wrap_content"

РЕДАКТИРОВАТЬ:

Вам нужно рассчитать размеры кнопок вручную в зависимости от размера экрана. Сначала вам нужно установить стандартный размер экрана. Например, если вы создаете приложение на ширине экрана 400 пикселей, а кнопка шириной 100 пикселей, то формула для поддержания той же button width to screen width на всех устройствах будет следующей:

  DisplayMetrics metrics = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(metrics); buttonWidth = 100 * (metrics.widthPixels/400); 

Случай использования:
Если ширина экрана = 480 пикселей, ширина кнопки должна быть 120 пикселей.

Хорошим способом решения этого является создание нескольких макетов для различной комбинации разрешения экрана. Когда вы достигнете максимального растягивания, создайте новый макет, который имеет фиксированное значение там, где это необходимо. См. Раздел «Использование псевдонима компоновки» в http://developer.android.com/training/multiscreen/screensizes.html#TaskUseAliasFilters

Попробуйте установить layout_width в wrap_content против 0dp.

Ширина / Высота, похоже, всегда должны быть установлены вместе. Это работает на мой взгляд

  <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" /> 

Родитель кнопки настроен на обертку содержимого, поэтому масштабируется вниз, но до максимальной ширины (4 кнопки)