2014-02-14 1 views
0

У меня есть три элемента, как то:Android - эллипс к левому TextView

element1 - element3

Второй элемент "-"

По умолчанию с эллипсом Android будет усечь element3, но Я хочу усечь ELEMENT1. Есть ли способ сделать это?

<LinearLayout 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:orientation="horizontal"> 
     <LinearLayout 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:orientation="horizontal" 
      android:gravity="left"> 
      <TextView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:ellipsize="end" 
       android:singleLine="true" 
       android:text="CIAO CIAO CIAO CIAO CIAO CIAO CIAO CIAO" 
       android:textColor="@color/text_content" /> 
      <TextView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:singleLine="true" 
       android:text=" - " 
       android:textColor="@color/text_content" /> 
      </LinearLayout> 
     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:singleLine="true" 
      android:text="CIAO CIAO CIAO CIAO CIAO CIAO" 
      android:ellipsize="none" 
      android:textColor="@color/important_content"/> 
    </LinearLayout> 

EDIT: Второй элемент и третий элемент должны быть выровнены влево!

ответ

5

Вы можете использовать атрибут веса макета для управления «значением» каждого элемента в LinearLayout. См. Здесь для получения дополнительной информации: Linear Layout Weight

Я взял ваш xml-макет ниже и немного отредактировал его, чтобы создать результат, который, как я думаю, вы ищете. Обратите внимание, что TextView1 имеет макет 1, в то время как TextView2 и TextView3 имеют вес макета 0. Это означает, что LinearLayout сначала назначает пространство TextView2 и TextView3, а затем присваивает все пространство, оставшееся до TextView1. Поэтому TextView1 - это элемент, который сначала будет эллипсирован.

<LinearLayout 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:orientation="horizontal" > 

    <TextView 
     android:id="@+id/TextView1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:ellipsize="end" 
     android:maxLines="1" 
     android:scrollHorizontally="true" 
     android:layout_weight="1" 
     android:text="element1element1element1" /> 

    <TextView 
     android:id="@+id/TextView2" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:maxLines="1" 
     android:scrollHorizontally="true" 
     android:layout_weight="0" 
     android:text=" - " /> 

    <TextView 
     android:id="@+id/TextView3" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:ellipsize="none" 
     android:maxLines="1" 
     android:scrollHorizontally="true" 
     android:layout_weight="0" 
     android:text="element3element3element3" /> 
</LinearLayout> 
+0

Я добавил часть, в которой «-» должен быть выровнен по левому краю, а не выровнен по правому краю. С layout_weight У меня есть эта проблема :( – Filnik

+1

Просто установите layout_width из LinearLayout в wrap_content. Я отредактировал пример выше. – Dean

+0

Действительно спасибо! Теперь он работает ^^ – Filnik

Смежные вопросы