Это трудно объяснить, пожалуйста, потерпите меня.
У меня есть верхняя строка меню в дизайне, который мне был дан (это порт).
Панель менюимеет две кнопки, одну слева от меню, одну справа и текстовый заголовок между двумя кнопками.
Текстовое представление состоит из одной строки, поэтому, если текст длиннее, чем текстовое представление, оно укорачивается с многоточием в конце.Текст должен быть центрирован по ширине экрана между кнопками.Текст является заголовком для текущего контента, и это нормально, что он может быть сокращен.На практике на большинстве устройств отсекается только нечетная буква или две.
Если обе кнопки видны, то это очень просто, однако, в зависимости от того, где я нахожусь в приложении, правая кнопка может не отображаться.видимый.Когда он не виден, я использую View.GONE.Проблема состоит в том, что текст теперь заполняет оставшееся пространство, которое желательно, но центрируется в этом оставшемся пространстве, а не в пределах ширины дисплея, так что короткий фрагмент текста смещается вправо на ширину первой кнопки.
Использование View.INVISIBLE вместо View.GONE не является ответом, поскольку текст затем корректно центрируется, но не использует доступное пространство для минимизации сокращения текста.
Вот эффект I 'm пытается достичь:
Обе видимые кнопки:
---------------------------------------------------------------
| Left button | Title text centred in display | Right button |
---------------------------------------------------------------
Скрытая правая кнопка
---------------------------------------------------------------
| Left button | Title text centred in display |
---------------------------------------------------------------
Скрытая правая кнопка с длинным текстом, показывающим elipsis.Это то, что я ищу.
---------------------------------------------------------------
| Left button | A really long piece of title text centred ...|
---------------------------------------------------------------
Вот что я получаю, когда прячу правую кнопку, обратите внимание, что текст не центрирован.
---------------------------------------------------------------
| Left button | Title text centred in this space |
---------------------------------------------------------------
Вотмакет, который я использую в настоящее время.
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:background="@drawable/activitytitlegradient"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center_vertical">
<ImageView android:id="@+id/mainMenuLeftButton"
android:background="#00ffffff"
android:layout_gravity="center_vertical"
android:src="@drawable/rr_boat_bow"
android:scaleType="fitStart"
android:layout_weight="1"
android:layout_height="34dip"
android:layout_width="wrap_content"/>
<TextView android:id="@+id/mainMenuTitle"
android:layout_weight="10"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingLeft="2dp"
android:background="#00ffffff"
android:text="Reference"
android:singleLine="true"
android:textSize="19sp"
android:textStyle="bold"
android:textColor="#ffffff"
android:gravity="center_horizontal|center_vertical" />
<Button android:id="@+id/mainMenuRightButton"
android:background="@drawable/buttonborder"
android:text="Edit"
android:textSize="13sp"
android:textColor="#ffffff"
android:textStyle="bold"
android:layout_margin="3dip"
android:padding="3dip"
android:layout_weight="1"
android:layout_height="35dip"
android:layout_width="wrap_content"
android:visibility="gone"/>
</LinearLayout>
Первая кнопка реализована как ImageView для включения некоторых других (не относящихся) эффектов, которые я делаю в другом месте.Текст жестко запрограммирован только для выкладки.Мой код изменяет текст по мере необходимости.
Я могу сделать это с помощью пользовательского представления, но я уверен, что должен быть способ сделать это со стандартной структурой.
Спасибо за любые подсказки...