2015-06-19 2 views
-2

Есть мой код ниже. Мне нужно получить результат, как на этом snipset:Android TextView в одной строке

Когда короткая строка:

1 line: ABC (123) 

Когда длинная строка:

1 line: ABC ABC ABC ABC ABC...(123) 

Любая помощь?

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

    <TextView 
     android:id="@+id/id1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textStyle="bold" 
     android:ellipsize="end" 
     android:maxLines="1" 
     android:visibility="visible" 
     android:text="ABC ABC ABC ABC ABC ABC ABC ABC ABC ABC ABC ABC" 
     android:textSize="@dimen/text_size_form"/> 

    <TextView 
     android:id="@+id/id2" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:visibility="visible" 
     android:ellipsize="end" 
     android:maxLines="1" 
     android:text="123" 
     android:textSize="@dimen/text_size_form"/> 

</LinearLayout> 
+0

В чем проблема? –

+0

Мне нужно держать в одной строке длинную и короткую строку. но текущий второй параметр не отображается, он накладывается первым, – waclaw

+0

это может помочь: http://stackoverflow.com/questions/25247018/android-textview-singleline-field-hides-long-text – smoggers

ответ

0

Добавить это свойство андроид: SingleLine = «истина» в вашем TextView

+0

Хорошо, но второй параметр не отображается – waclaw

+0

Можете ли вы дать подробную информацию о своем втором параметре? Как вы хотите показать? – Jatin

+0

Мне нужно выровнять влево для короткой строки ABC (parametr: id2) – waclaw

1

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

ex. Максимальная длина вы хотите 20

if (str.length()>20) { 
    str = str.substring(0, 20)+"..."; 
} 
+0

Хорошо, но второй параметр не отображается – waclaw

+0

Составьте второй параметр в строке 'str = str.substring (0, 20) +" ... " + secondParameterStr; ' –

0

Использование ниже кода

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

    <TextView 
     android:id="@+id/id1" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     android:textStyle="bold" 
     android:ellipsize="end" 
     android:maxLines="1" 
     android:visibility="visible" 
     android:text="ABC ABC ABC ABC ABC ABC ABC ABC ABC ABC ABC ABC" 
     android:textSize="@dimen/text_size_form"/> 

    <TextView 
     android:id="@+id/id2" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:visibility="visible" 
     android:ellipsize="end" 
     android:maxLines="1" 
     android:text="123" 
     android:layout_marginLeft="-3dp" 
     android:textSize="@dimen/text_size_form"/> 

</LinearLayout> 
+0

Хорошо, но второй параметр не отображается – waclaw

+0

Дважды проверьте пожалуйста. Оно работает. Обратите внимание на этот код: android: layout_width = "0dp" android: layout_height = "wrap_content" android: layout_weight = "1" –

+0

Это нормально, Как выровнять по левому краю, для лучшего удобства пользователя? – waclaw

0

Вы также можете использовать RelativeLayout и свойство, как показано ниже ..

  1. alignParentRight для второго TextView.
  2. Первый TextView toLeftOf второго TextView.

Вот пример кода .. Попробуйте это.

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" > 

    <TextView 
     android:id="@+id/id1" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_toLeftOf="@+id/id2" 
     android:ellipsize="end" 
     android:singleLine="true" 
     android:text="ABC ABC ABC ABC ABC ABC ABC ABC ABC ABC ABC ABC" 
     android:textStyle="bold" 
     android:visibility="visible" /> 

    <TextView 
     android:id="@+id/id2" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentRight="true" 
     android:ellipsize="end" 
     android:maxLines="1" 
     android:text="123" 
     android:visibility="visible" /> 

</RelativeLayout> 

Результат выглядит следующим образом.

enter image description here

0

пытаясь угадать

String s = "ABC ABC ABC ABC"; 

     if(s.split(" ").length>1) 
     { 
      s = s.split(" ")[0]+" ("+s.split(" ").length+")"; 
     } 

textView.setText(s); 
0

просто добавьте это в XML

android:ellipsize="middle" 
android:singleLine="true" 
Смежные вопросы