Я пытаюсь создать макет в Android для уведомления. Моя цель - показать следующее:
1: значок для приложения 2: вертикально сложенная LinearLayout с названием сессии и комнатой, которая должна состояться в 3: время начала сеанса
Проблема, с которой я сталкиваюсь, состоит в том, что # 2 имеет переменную ширину в зависимости от размера заголовка. Hardcoding ширина будет выглядеть ужасно, если пользователь переключит трубку в сторону и перейдет в альбомный режим. Поэтому вот мой вопрос:
Как я могу разместить три компонента по горизонтали в Android таким образом, чтобы # 1 и # 3 были выровнены влево и вправо соответственно, а # 2 просто занимает оставшееся пространство?
После битвы с этим в течение нескольких часов я понял, как использовать layout_weight. Похоже, это было подходящим средством для решения проблемы.
Что-то вроде этого может быть разумной основой:
<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, чтобы дать ему немного пробелов
Посмотрите RelativeLayout. Вы можете сделать свой средний LinearLayout с помощью android: layout_toLeftOf и android: layout_toRightOf, чтобы заставить его быть посередине. Я обычно ссылаюсь на страницу Android Common Layout Object для быстрого примера, чтобы начать. Там может быть небольшое предостережение, которое мне не хватает, но я знаю, что общий трюк, который я использовал однажды, и я уверен, что он сработал.
попробуйте что-то вроде этого:
<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>