2013-06-10 2 views
0

Я хочу создать простую сетку из 6 квадратных кнопок в центре экрана. Действовать как меню. Проблема в том, что я не знаю, как я могу масштабировать их с размером экрана. Например, квадрат 100dp подходит для небольших экранов, но на больших экранах он затушевывается пустым пространством. Но увеличение квадратов имеет противоположный эффект на меньших экранах.Как создать сетку, которая будет масштабироваться до размера и плотности экрана

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

Я бы дал код, но у меня действительно нет ничего, что не является основным XML-файлом, который жестко кодирует размеры квадратов.

Спасибо.

ответ

0

Размеры (особенно те, что измерены в dp, например, стороны квадратной кнопки или расстояние между кнопками) могут быть динамически определены в dimens.xml, которые по очереди могут быть определены для разных размеров экрана, создавая специальные папки, такие как как /res/values-hdpi, /res/values-xlarge, /res/values-sw720dp и т. д. с их собственными dimens.xml файлами внутри. См. http://developer.android.com/guide/practices/screens_support.html для получения дополнительной информации.

В макете XML вы делаете:

<ImageView 
    android:id="@+id/button1" 
    android:layout_height="@dimen/button_height" 
    android:layout_width="@dimen/button_width" 
    android:layout_marginBottom="@dimen/distance_between_buttons" 
    android:src="/res/drawable/imgbutton"/> 

<ImageView 
    android:id="@+id/button2" 
    android:layout_height="@dimen/button_height" 
    android:layout_width="@dimen/button_width" 
    android:layout_marginBottom="@dimen/distance_between_buttons" 
    android:src="/res/drawable/imgbutton"/> 

<ImageView 
    android:id="@+id/button3" 
    android:layout_height="@dimen/button_height" 
    android:layout_width="@dimen/button_width" 
    android:src="/res/drawable/imgbutton"/> 

В /res/values/dimens.xml вы можете иметь:

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <dimen name="button_height">100dp</dimen> 
    <dimen name="button_width">100dp</dimen> 
    <dimen name="distance_between_buttons">20dp</dimen> 
</resources> 

В/RES/значения, большие вы можете иметь:

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <dimen name="button_height">200dp</dimen> 
    <dimen name="button_width">200dp</dimen> 
    <dimen name="distance_between_buttons">40dp</dimen> 
</resources> 
+0

Что будет делать dimens.xml? Не могли бы вы дать быстрый фрагмент кода? –

+0

Обновлен фрагментами кода. – Piovezan

+0

Так что, если бы у меня был макет не в одной из этих специальных папок, а в файлах dimen.xml. Когда он раздувает макет, он будет читать dimen.xml, который применяется к текущему размеру экрана. Это верно? –

Смежные вопросы