2016-09-06 3 views
2

У меня проблема с использованием TextView в ListView, где TextView неправильно разбивает строку.Неисправность ломающихся линий Android Text

Для целей иллюстрации проблемы, у меня есть следующий текст для отображения:

"123456789=" 
"12345678901 =" 
"123456789*" 

XML-(TextView) Я использую выглядит следующим образом: -

<?xml version="1.0" encoding="utf-8"?> 
<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:gravity="end" 
    android:textAlignment="gravity" 
    android:layout_gravity="end" 
    android:textAppearance="?android:attr/textAppearanceLarge" 
/> 

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

123456789 

      = 
12345678901= 
    123456789 

      * 

Очевидно, что я не хочу, «=» и «*», чтобы быть на отдельной строке , У меня попробовал десятки различных вариантов xml, не достигнув того, чего я хочу.

В эмуляторы испытанные являются:

Nexus 6 API-23: 5556

Nexus6p API-23: 5556

MotoG3 Android-6

Составитель для Android 6 с помощью 23.0.3

Используя следующий xml (EditText), я получаю желаемый результат:

<?xml version="1.0" encoding="utf-8"?> 
<EditText xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:gravity="end" 
    android:textAlignment="gravity" 
    android:layout_gravity="end" 
    android:textAppearance="?android:attr/textAppearanceLarge" 
    android:editable="false"> 
</EditText> 

Правильный результат выглядит следующим образом:

123456789
     567 = 
12345678901 = 
123456789
     567 * 

В то время как я мог бы использовать EditText, дисплей не должен быть редактируемым , и я считаю, что TextView должен работать. Кроме того, «андроид: редактируемый» устарел.

Может кто-то читает это мне посоветовать либо, как получить TextView работать по мере необходимости, или в качестве альтернативы, как использовать EditText с не-осуждается функции и достичь желаемого результата?

......... добавлено к вопросу ----------

Код, используемый для создания ListView в тестовом прог выглядит следующим образом: -

private void createLayout() { 

    RelativeLayout wRelLayout = new RelativeLayout(this); 

    wRelLayout.setBackgroundColor(Color.DKGRAY); 

    RelativeLayout.LayoutParams jLayParams = new RelativeLayout.LayoutParams(500, 700); 

    setContentView(wRelLayout, jLayParams); 

    ArrayList<String> alCalcLines = new ArrayList(); 
    ListView lvCalcLines = new ListView(this); 
    lvCalcLines.setX(10); 
    lvCalcLines.setY(10); 
    lvCalcLines.setBackgroundColor(Color.WHITE); 
    lvCalcLines.setPadding(10, 10, 10, 10); 
    lvCalcLines.setAdapter(new ArrayAdapter<>(
      this, R.layout.text_view_1, alCalcLines)); // xml 

    jLayParams = new RelativeLayout.LayoutParams(
      RelativeLayout.LayoutParams.MATCH_PARENT, 
      RelativeLayout.LayoutParams.MATCH_PARENT); 

    wRelLayout.addView(lvCalcLines, jLayParams); 

    alCalcLines.add("123456789="); 
    alCalcLines.add("12345678901 ="); 
    alCalcLines.add("123456789*"); 
} 

ответ

0

Добавить это в Редактировать текст XML, работает для меня.

<EditText 
    android:clickable="false" 
    android:cursorVisible="false" 
    android:focusable="false" 
    android:focusableInTouchMode="false"/> 
+0

Я могу посмотреть на это, однако это TextView, и TextView должен обрабатывать его правильно. – briano

-1

добавить [андроида: SingleLine = "истина"] в TextView линии

0

Попробуйте это в TextView или EditText

txt_view.setTextDirection(View.TEXT_DIRECTION_RTL); 

или

txt_view.setTextDirection(View.TEXT_DIRECTION_ANY_RTL); 

Также в андроида: supportsRtl = «истина» к приложению

В XML

android:textDirection="rtl" 

набор тяжести в правой

0

Если вы не хотите слово (в вашем случае «= «это слово, поскольку оно разделено пробелами), которое не должно быть перенесено на следующую строку, вы можете использовать незанятое пространство .
Это \u00A0 в Android. Итак, ваша строка выглядит так:

"123456789\u00A0=" 
"12345678901\u00A0=" 
"123456789\u00A0*" 
+0

Я положил «\ u00A0» в TextView и, похоже, работает нормально. Всегда ли по умолчанию пробелы по умолчанию? Я дам ему тик, если скоро не появится лучший ответ. Мне кажется, было бы проще поставить новую строку, если потребуется перерыв, но, возможно, я что-то упустил. – briano

+0

@briano, только если второе слово слишком длинное, чтобы соответствовать «TextView». Если ответ правильный, то PLS принять его –

+0

Это не так. Он должен соответствовать двум строкам. – briano

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