Макет Android с использованием layout_weight, layout_width и maxWidth

Я пытаюсь получить строку текста, которая будет похожа на

foofoofoo - barbarbar

, но я хочу, чтобы она вытягивала foo и bar, если она не помещается в одной строке. т.е. я пытаюсь сократить их.

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content">
    <TextView android:id="@+id/text_1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:adjustViewBounds="true"
        android:maxWidth="0dip"
        android:layout_weight="1"
        android:textColor="#ffffff"
        android:singleLine="true"
        android:ellipsize="true"
        android:text="foofoofoofoo" />
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textColor="#ffffff"
        android:text=" - " />
    <TextView
        android:id="@+id/text_2"
        android:layout_width="wrap_content"                         
        android:layout_height="wrap_content"
        android:maxWidth="0dip"
        android:layout_weight="1"
        android:textColor="#ffffff"
        android:singleLine="true"
        android:ellipsize="true"
        android:text="barbarbarbar" />
</LinearLayout>

Потерпите, это работает частично.

Установка layout_width TextView на 0dip и layout_weight равным 1 означает, что каждый из них будет занимать 50% доступного пространства.

Установка для singleLine значения true и ellipsize to true означает, что они будут выглядеть как foofoo ... если текст больше, чем контейнер.

Поэтому мой результат (если текст длиннее) должен быть

foofoo .. - barbar ..

Что это такое! Так что это работает.

Я пытаюсь исправить это , если первый TextView (id: text_1) содержит текст, который меньше 50%, заданных layout_width = " ? Единственный способ, который я могу придумать, - это что-то вроде: T entity = new T (); IEnumerable = new List {entity} ...

Предлагает ли C # какой-нибудь хороший метод для приведения одного объекта типа T к IEnumerable ?

] Единственный способ, который я могу придумать, это что-то вроде:

T entity = new T();
IEnumerable<T> = new List { entity }.AsEnumerable();

И я думаю, должен быть способ получше.

17
задан R. Martinho Fernandes 10 February 2011 в 16:57
поделиться