2013-04-21 1 views
0

Я хочу создать игру с точно такой же макет на всех устройствах. Я знаком с dp, wrap_content и fill_parent. Но они не производят ТОЧНУЮ та же компоновка.Наличие такой же компоновки на всех устройствах. Как?

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

Что-то вроде:

android:layout_width="40%" 

Я знаю, что приведенный выше код XML не работает, но есть обходной путь? Не существует ли в этом Java-решение? Что нибудь? На изображении ниже показано, что я пытаюсь достичь на всех устройствах.

enter image description here

ответ

2

Я знаю, что приведенный выше код XML не работает, но есть обходной путь?

LinearLayout и android:layout_weight позволяют вам работать на процентной основе. Следующая компоновка имеет три кнопки, данные 50%, 30% и 20% экрана соответственно:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical"> 

    <Button 
     android:layout_width="fill_parent" 
     android:layout_height="0dip" 
     android:layout_weight="50" 
     android:text="@string/fifty_percent"/> 

    <Button 
     android:layout_width="fill_parent" 
     android:layout_height="0dip" 
     android:layout_weight="30" 
     android:text="@string/thirty_percent"/> 

    <Button 
     android:layout_width="fill_parent" 
     android:layout_height="0dip" 
     android:layout_weight="20" 
     android:text="@string/twenty_percent"/> 

</LinearLayout> 

Для того, чтобы сделать что-то в процентном соотношении, установить ширину или высоту (для горизонтального или вертикального LinearLayouts, соответственно,) должно быть 0dp, затем присвоить android:layout_weight желаемому проценту (например, 20). Если сумма весов не будет добавлена ​​к 100, добавьте android:weightSum="100" к самому LinearLayout.

Конечно, выполнение каких-либо действий в процентах не даст вам «ТОЧНОЙ такой же макет» для любого обычного определения термина «ЭКЗАМЕНТ». Но, возможно, это удовлетворит ваши потребности. Это, безусловно, может реализовать маркированный дизайн с вашего скриншота.

+0

Проблема с LinearLayout заключается в том, что она не позволяет размещать представления друг на друга. На моем изображении фон - это фильм, который воспроизводится в ViedeoView. Возможно ли разместить LinearLayout внутри RealativeLayout для той же активности? – user2186852

+0

@ user2186852: «Возможно ли установить LinearLayout внутри RealativeLayout для той же активности?» -- конечно. – CommonsWare

+0

Я попробовал, творит чудеса, большое спасибо! – user2186852

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