Макет приложения для Android - PullRequest
1 голос
/ 15 марта 2012

Я разрабатываю приложение для Android версии 2.2.

Мое приложение должно иметь такую ​​структуру:

[ Spinner here (fixed height) ]

[ ListView (not-fixed height) ]

[ ImageView (fixed-height) ]

Я должен использовать только портретную ориентацию.

Я использую для этого linearLayout.Как я могу рассчитать высоту listView, чтобы показывать счетчик в верхней части экрана, просмотр изображений в нижней части, а просмотр списка занимал все свободное пространство, но не отталкивал других от поля зрения.

Будет круто сделатьэто динамично для многих разрешений экрана.

Спасибо

Ответы [ 3 ]

1 голос
/ 15 марта 2012

Используйте относительный макет, чтобы выполнить то, что вам нужно.

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

    <Spinner
        android:id="@+id/spinner1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true" />

    <ImageView
        android:id="@+id/imageView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:src="@drawable/icon" />

    <ListView
        android:id="@+id/listView1"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_below="@+id/spinner1"
        android:layout_above="@+id/imageView1" />

</RelativeLayout>

Выполнив этот просмотр списка, вы отрегулируете его размер так, чтобы он помещался между счетчиком и просмотром изображения на экране

1 голос
/ 15 марта 2012

Вам необходимо использовать атрибут android: layout_weight для элемента переменной высоты, чтобы он занимал доступное пространство.

<LinearLayout
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >

<Spinner
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    />

<ListView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    />

<ImageView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    />

</LinearLayout>
0 голосов
/ 15 марта 2012

Вот еще один способ сделать это, используя weights. Это может быть самый простой подход.

Вы можете ввести в weight процент экрана, который вы хотели бы занять.

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

    <Spinner 
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="10"/>

    <ListView 
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="80"></ListView>

    <ImageView 
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="10"/>


</LinearLayout>

EDIT: Теперь, когда я думаю об этом, это "исправит" размер всех виджетов. Они будут «исправлены» в процентах от экрана. Это будет хорошо масштабироваться на экранах других размеров, но вы сказали, что хотите, чтобы ListView не было исправлено.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...