Макет Android: квадратичные просмотры - PullRequest
7 голосов
/ 16 марта 2011

В приложении Android мне нужно добавить представление к моему RelativeLayout, которое подчиняется следующим правилам:

  1. Представление должно быть квадратичным, то есть высота и ширина представления должны совпадать.
  2. Вид должен заполнять всю ширину.

Он должен выглядеть следующим образом (квадрат должен быть центрирован по вертикали):

+-------------+
|  activity   |
|             |
|+-----------+|
||           ||
||  square   ||
||           ||
||           ||
|+-----------+|
|             |
|             |
+-------------+

В конце я хочуиметь ImageView, который отображает квадратичное изображение.В настоящее время я сделал это, установив ширину и высоту вида на FILL_PARENT, и позволил ImageView правильно нарисовать изображение (используя scaleType = centerInside).

Но: теперь я хочу иметь дополнительный вид, который выровненс верхней линией квадратного вида, и это где мой подход терпит неудачу.Если я теперь установлю ширину вида на FILL_PARENT и высоту его на WRAP_CONTENT, изображение больше не будет соответствовать всей ширине.

У вас есть решение этой проблемы?Было бы предпочтительнее, если бы это можно было сделать, просто написав XML, если это возможно.

Заранее спасибо!

Ответы [ 3 ]

4 голосов
/ 16 марта 2011

Посмотрите на главный ответ на этот вопрос.

Макет Android с квадратными кнопками

0 голосов
/ 27 сентября 2011

Я создал расширение LinearLayout, которое делает именно то, что вы хотите. Я обернул эту вещь в проект библиотеки Android для удобства. Смотри https://github.com/ronaldsteen/Android-SquareLayout-Library

0 голосов
/ 16 марта 2011

Если вы хотите, чтобы два представления были рядом друг с другом, ни у одного из них не может быть FILL_PARENT.Похоже, вам нужен горизонтальный LinearLayout, содержащий ImageView и другой вид.Затем установите android:layout_weight="1" и android:layout_width="0dp" в ImageView, что заставит ImageView заполнить родительский элемент.Затем установите для layout_width другого представления значение "wrap_content".

<LinearLayout android:width="FILL_PARENT" android:height="WRAP_CONTENT">
   <ImageView android:layout_height="WRAP_CONTENT" android:layout_width="0dp" android:layout_weight="1" />
   <OtherView android:layout_height="WRAP_CONTENT" android:layout_width="WRAP_CONTENT" />
</LinearLayout>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...