Проблема с макетом в Android (многоточие текста между двумя кнопками) - PullRequest
1 голос
/ 28 июня 2011

Попытка сделать панель инструментов с двумя кнопками с обеих сторон и заголовком между ними. Заголовок должен быть закруглен, если текст слишком длинный, например:

[Button] Some quite long header te... [Button]

Я пробовал несколько решений, но ни одно не помогло. Моя последняя попытка была примерно такой:

<TableLayout android:layout_width="fill_parent"
             android:layout_height="wrap_content"
             android:background="#444"
             android:stretchColumns="1">
    <TableRow android:background="#777" android:minHeight="60dp">
        <Button android:text="Left"/>
        <TextView android:text="Center this very long text and ellisize"
                  android:background="#f00"
                  android:lines="1"
                  android:ellipsize="end"
                  android:scrollHorizontally="true"
                  android:gravity="center"
                />
        <Button android:text="Right"/>
    </TableRow>
</TableLayout>

Но правая кнопка все еще уходит с экрана ...

UPDATE: Решение:

<RelativeLayout android:layout_width="fill_parent" android:layout_height="64dip">
    <Button android:id="@+id/btnLeft"
            android:text="Left"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"/>
    <Button android:id="@+id/btnRight"
            android:text="Right"
            android:layout_alignParentRight="true"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"/>
    <TextView android:text="Center this very long text and ellisize"
              android:layout_width="fill_parent" android:layout_height="fill_parent"
              android:background="#f00"
              android:lines="1"
              android:ellipsize="end"
              android:gravity="center"
              android:scrollHorizontally="true"
              android:layout_toLeftOf="@id/btnRight"
              android:layout_toRightOf="@id/btnLeft"
            />
</RelativeLayout>

ОБНОВЛЕНИЕ 2: И второе решение с использованием TableLayout:

<TableLayout android:layout_width="fill_parent"
             android:layout_height="wrap_content"
             android:background="#444"
             android:stretchColumns="1"
             android:shrinkColumns="1">
    <TableRow android:background="#777" android:minHeight="60dp">
        <Button android:text="Left"/>
        <TextView android:text="Center this very long text and ellisize"
                  android:background="#f00"
                  android:lines="1"
                  android:ellipsize="end"
                  android:scrollHorizontally="true"
                  android:gravity="center"
                />
        <Button android:text="Right"/>
    </TableRow>
</TableLayout>

Ответы [ 2 ]

0 голосов
/ 28 июня 2011

Хотя RelaviveLayout должен работать, другой вариант - добавить LinearLayout, установленный на Horizontal.Установите для трех виджетов значение layout_width: "fill_parent" и присвойте TextView и обеим кнопкам вес (1 для каждого, если вы хотите, чтобы они одинаково занимали три части экрана).

Не на компьютере для тестированияэто сейчас, но теоретически должно работать.

0 голосов
/ 28 июня 2011

Попробуйте использовать относительный макет вместо макета таблицы.Если вы настроите две кнопки для выравнивания по левому и правому краям соответственно, вы можете установить текстовое поле так, чтобы оно охватывало две кнопки со свойствами layout_alignRight и layout_alignLeft.Вы можете посмотреть пример кода для RelativeLayout, приведенный на веб-сайте разработки для Android.

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