Компоновка компонентов по горизонтали в Android - PullRequest
1 голос
/ 04 декабря 2010

Я пытаюсь создать макет в Android для уведомления.Моя цель состоит в том, чтобы отобразить следующее:

1: значок для приложения 2: вертикально расположенная линейная планировка с заголовком сеанса и помещением, которое будет удерживаться в 3: время начала сеанса

* 1004Проблема, с которой я сталкиваюсь, состоит в том, что # 2 имеет переменную ширину в зависимости от размера заголовка.Жесткое кодирование ширины выглядело бы ужасно, если бы пользователь повернул трубку вбок и перешел в ландшафтный режим.Поэтому вот мой вопрос:

Как я могу расположить три компонента по горизонтали в Android так, чтобы # 1 и # 3 были выровнены влево и вправо соответственно, а # 2 просто занял оставшееся место?

Ответы [ 4 ]

0 голосов
/ 22 декабря 2010

После нескольких часов борьбы с этим я понял, как использовать layout_weight.Кажется, это было подходящим средством для решения проблемы

0 голосов
/ 04 декабря 2010

попробуйте что-то вроде этого:

<RelativeLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content">
    <ImageView android:id="@+id/img1"
        android:background="#00F"
        android:layout_width="100dip"
        android:layout_height="100dip"
        android:layout_alignParentLeft="true"/>
    <ImageView android:id="@+id/img2"
        android:background="#0F0"
        android:layout_width="0dip"
        android:layout_height="100dip"
        android:layout_toRightOf="@id/img1"
        android:layout_toLeftOf="@+id/img3"/>
    <ImageView android:id="@+id/img3"
        android:background="#F00"
        android:layout_width="150dip"
        android:layout_height="100dip"
        android:layout_alignParentRight="true"/>
</RelativeLayout>
0 голосов
/ 04 декабря 2010

Примерно так может быть разумным основанием:

<RelativeLayout
      android:id="@+id/RelativeLayout01"
      android:layout_width="fill_parent"
      android:layout_height="fill_parent"
      android:orientation="horizontal"
      xmlns:android="http://schemas.android.com/apk/res/android">
      <ImageView
            android:id="@+id/ImageView01"
            android:src="@drawable/droid"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"></ImageView>
      <LinearLayout
            android:id="@+id/LinearLayout01"
            android:layout_below="@id/ImageView01"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="vertical"
            android:layout_alignTop="@+id/ImageView01"
            android:layout_toRightOf="@+id/ImageView01" 
            android:background="#ffff00">
            <TextView
                  android:text="This is wide, wide, title text"
                  android:id="@+id/TextView01"
                  android:layout_width="wrap_content"
                  android:layout_height="wrap_content"></TextView>
            <TextView
                  android:text="Short text"
                  android:id="@+id/TextView02"
                  android:layout_width="wrap_content"
                  android:layout_height="wrap_content"></TextView>
            <TextView
                  android:text="Middling wide text"
                  android:id="@+id/TextView03"
                  android:layout_width="wrap_content"
                  android:layout_height="wrap_content"></TextView>

</LinearLayout>
      <TextView
            android:text="Right hand text"
            android:id="@+id/TextView04"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:layout_alignTop="@+id/ImageView01" 
            android:background="#00ffff"></TextView>
</RelativeLayout>

Возможно, вы захотите жестко запрограммировать некоторую левую границу в LinearLayout, чтобы немного увеличить интервал

0 голосов
/ 04 декабря 2010

Посмотрите на RelativeLayout .Вы можете заставить свой средний LinearLayout использовать android: layout_toLeftOf и android: layout_toRightOf, чтобы заставить его быть в середине.Я обычно обращаюсь к странице Android Common Layout Object для быстрого примера, чтобы начать.Возможно, еще есть небольшая оговорка, которую я пропускаю, но я знаю, что это общий прием, который я использовал однажды, и я почти уверен, что он сработал.

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