2015-02-06 7 views
1

Привет, у меня есть Textview с переменной шириной, но максимум 250dp. Но как-то Android устанавливает его всегда на maxwidth.Android TexxtView с maxwidth

С коротким текстом и без максимальной ширины он работает, но затем текст достаточно длинный, чтобы поле превышало ширину экрана, оно перекрывает стрелку.

enter image description here

Я уже пробовал эти два варианта, которые дают тот же результат, как на картинке

  <TextView 
       android:id="@+id/bubbleText" 
       style="@style/MarkerText" 
       android:maxWidth="250dp" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:background="#FF0000" 
       android:layout_marginEnd="@dimen/defaultSpacing" /> 

      <TextView 
       android:id="@+id/bubbleText" 
       style="@style/MarkerText" 
       android:layout_width="0dp" 
       android:layout_height="wrap_content" 
       android:layout_marginEnd="@dimen/defaultSpacing" 
       android:layout_weight="1" 
       android:background="#FF0000" 
       android:maxWidth="250dp" 
       android:singleLine="false" /> 

я хочу, чтобы это выглядит следующим образом:

enter image description here

Дополнительная информация

полный XML

<LinearLayout 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:background="@drawable/marker_text_background" > 

     <LinearLayout 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:orientation="horizontal" 
      android:paddingBottom="@dimen/tinySpacing" 
      android:paddingEnd="@dimen/defaultSpacing" 
      android:paddingStart="@dimen/defaultSpacing" 
      android:paddingTop="@dimen/tinySpacing" > 

      <TextView 
       android:id="@+id/bubbleText" 
       style="@style/MarkerText" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_marginEnd="@dimen/defaultSpacing" 
       android:background="#FF0000" 
       android:maxWidth="250dp" /> 

      <mypackage.IconTextView 
       xmlns:android="http://schemas.android.com/apk/res/android" 
       style="@style/MarkerTextIcon" 
       android:layout_width="wrap_content" 
       android:layout_height="match_parent" 
       android:gravity="center" 
       android:text="@string/icon_map_arrow" /> 
     </LinearLayout> 
    </LinearLayout> 

    <ImageView 
     android:layout_width="20dp" 
     android:layout_height="20dp" 
     android:layout_marginBottom="-5dp" 
     android:layout_marginTop="-1dp" 
     android:src="@drawable/marker_text_background_rectangle" /> 
</LinearLayout> 

<style name="MarkerText" parent="android:Widget.Holo.Light.TextView"> 
    <item name="android:textColor">@color/myWhite</item> 
    <item name="android:textSize">@dimen/markerTextSize</item> 
</style> 

<dimen name="markerTextSize">22sp</dimen> 

Проблема occours-й баночное независимый фрагмент тоже

<?xml version="1.0" encoding="utf-8"?> 
<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:background="#FF0000" 
    android:maxWidth="250dp" 
    android:text="1. Willkommen bei meiner APP" 
    android:textSize="22sp" /> 
+0

Что такое стиль = "@ style/MarkerText" ?? – Andy

+0

y can can u уменьшить ур шрифт? –

+0

@MSGadag шрифт не должен иметь значения. Он должен по-прежнему обертывать –

ответ

0

Использование MaxWidth не будет причинять ему растягиваться.

Это, скорее всего, будет в вашем коде для:

android:layout_marginEnd="@dimen/defaultSpacing" 

и проверить все размеры:

style="@style/MarkerText" 

Как установка MaxWidth отдельно не вызывает это.

Должна быть какая-то фигура, которая помещает отступы между вашим текстом и текстовым изображением правой стороны или, возможно, какой-то особенный недостаток.

Использование maxWidth не должно вытеснять его так, как я показал вам на изображении, я думаю, что это вложенные макеты, и в ваших макетах и ​​элементах есть много определений полей и дополнений, это может заставляя ваш texview перемещаться вправо, и текст будет автоматически обернут, так как он не может вписаться в первую строку, но сам текстовый текст все еще сдвигается вправо.

image

+0

Я думаю, проблема может быть в вашем стиле.xml; Мне пришлось добавить лишнее слово, чтобы заставить вторую строку с кодом, который я сидел в моем редакторе –

+0

Я добавил дополнительную информацию – wutzebaer

+0

@wutzebaer Мне интересно, почему ваша линейная выкладка является шириной/высотой, а не совпадением? с ориентацией ориентации по вертикали, или это в вашей линии LinearLayout? –

1

Не 100% уверен, но я думаю, что проблема в том, что это текст многострочный.

Наблюдается ли представление, как ожидается, когда текст короче? т.е. «1. Добро пожаловать»

То, что я думаю, что происходит, является следующее:

мнение пытается сделать это на одной линии, то он расширяется до максимальной ширины, при условии, что не достаточно для рендеринга, делает его многострочный, но не растягивает представление.

Вы можете попробовать с помощью «1. Willkommen bei \ nmeiner APP», чтобы увидеть, показывает ли оно ожидаемое поведение.

Надеюсь, это поможет.

+0

textview должен сжиматься, чтобы заключить только ширину самой широкой строки. Это не причина. Посмотрите мое изображение в моем ответе, оно должно только обернуть текст. Я думаю, что есть проблема с его вложенными макетами, заполнением и полями, особенно с использованием горизонтального линейного макета и с отрицательным запасом –

+0

Я добавил независимый пример, он не имеет ничего общего с охватывающим макетом ... @shalafi я думаю вы предположение правильно, а я добавляю \ n, он выглядит нормально, но текст динамический, поэтому я не могу предсказать, где добавить строку – wutzebaer

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