2016-06-22 9 views
3

У меня есть TextView в LinearLayout. XML-TextView вAndroid: странная проблема с переносом текста с TextView

<TextView 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 

    android:background="@color/CLOUDS" 
    android:ellipsize="none" 
    android:maxLines="100" 
    android:minHeight="20dp" 
    android:minLines="1" 
    android:layout_margin="0dp" 
    android:paddingLeft="4dp" 
    android:paddingRight="4dp" 
    android:paddingTop="0dp" 
    android:textSize="14sp" 
    android:paddingBottom="0dp" 
    android:layout_weight="10" 
    android:layout_height="wrap_content" 
    android:layout_width="0dp" 
    android:singleLine="false" 
    android:scrollHorizontally="false" 
    android:inputType="textCapSentences|textMultiLine" 
    /> 

Error 1
Справа мы видим TextView набор с текстом: "Кампанарио Бланко \ nMistral Ice \ nMistral" Последнее слово не отображается.

Слева у нас есть другой текст с весом 10. Оба находятся в линейной компоновке.

LinearLayout linearLayout = new LinearLayout(context.mContext); 
    LinearLayout.LayoutParams ll = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT); 
    ll.topMargin = 2; 
    ll.bottomMargin = 0; 
    linearLayout.setOrientation(LinearLayout.HORIZONTAL); 
    linearLayout.setLayoutParams(ll); 
    linearLayout.setPadding(0, 0, 0, 0); 
    bubble.addView(linearLayout); 

Теперь, если я изменить содержимое представления к «Кампанарио Бланко \ nMistral Ice \ nMistral \ nMalibu» Теперь «мистраль» видно, но новая последняя работа «Mailbu» нет.

Error 2

Как показано общее количество строк равно сумме \ п, но он не принимает во внимание упаковку первой строки. Если мы удалим длинный текст, он работает так, как ожидалось. "Mistral Ice \ nMistral \ nMalibu"

NO error

+0

Где вы устанавливаете счетчик линий? – jaibatrik

+0

У меня нет строки. Я установил высоту как wrap_text. Информация о количестве строк - это просто вывод о том, как она автоматически обертывается. – eddie

+0

Странно. В качестве обходного пути вы можете добавить дополнительную строку новой строки. Ошибка с TextView? – jaibatrik

ответ

0

Вы можете иметь что-то вроде этого, использовать как этот

<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_marginTop="20dp" 
    android:layout_marginRight="20dp" 
    android:layout_marginLeft="20dp" 
    android:padding="6dp" 
    android:background="#358576" 
    tools:context="com.example.yujcore7.myapplicationtextviewdemo.MainActivity"> 


<TextView 
    android:textColor="#fff" 
    android:textSize="20sp" 
    android:layout_weight="1" 
    android:layout_width="0dp" 
    android:layout_height="match_parent" 
    android:text="Marca(s)" /> 

<TextView 
    android:textColor="#fff" 
    android:textAllCaps="true" 
    android:textSize="16sp" 
    android:layout_marginRight="10dp" 
    android:layout_width="wrap_content" 
    android:layout_height="match_parent" 
    android:text="Campanario Blanco\nMistral Ice\nMistral\nMalibu" /> 

использования этого макета и дайте мне знать.

+0

Спасибо. Моя первоначальная компоновка была чем-то вроде этого, она должна работать, но это не так. Поэтому я посмотрел вверх в иерархии, один из родительских линейных макетов был задан как ширина: WRAP_CONTENT, а один из его детей имел фиксированную ширину. Так возникла эта странная ошибка обертывания. Я обновил свой ответ. – eddie

0

Благодаря @ swanand-vaidya я отслеживал ошибку. У одного из родительских родителей был комплект wrap_content.

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:background="@color/WET_ASPHALT" 
android:orientation="vertical"> 

<TextView 
    android:layout_width="270dp" 
    android:layout_height="wrap_content" /> 

<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:background="#0D97FC" 
    android:orientation="horizontal"> 

    <TextView 

     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_weight="10" 
     android:background="@color/AMETHYST_DARK" 
     android:text="line1 hello world hello world hello world hello world \nline2 hello world hello\nline 3hello world\nline4 hello world world" 
     android:textSize="14sp" /> 

</LinearLayout> 

В результате этого макета

enter image description here

не отображается строка4. Как самый верхний линейный макет имеет wrap_conent.

Когда верхний макет имеет фиксированное значение или match_parent. Все строки отображаются правильно.