TextView не разделяет линию правильно

У меня проблема с чем-то, что "должно" работать, но этого просто нет.

TextView внутри TableRow не предоставляет разрыв строки, где он должен, вместо этого тот же TextView имеет ту же ширину, что и TableRow, игнорируя, что один TextView уже существует и занимает некоторое пространство.

Вот пример:

<!--?xml version="1.0" encoding="utf-8"?-->
<relativelayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@color/white">

 <linearlayout android:layout_width="match_parent" android:layout_height="match_parent" android:background="@color/white" android:orientation="vertical" android:weightsum="1">

 <scrollview android:layout_width="match_parent" android:layout_height="0px" android:layout_weight="0.4" android:scrollbars="vertical">

 <tablelayout android:id="@+id/tableAtTest" android:layout_width="match_parent" android:layout_height="wrap_content">

 <tablerow android:id="@+id/firstContainer" android:layout_width="match_parent" android:layout_height="wrap_content" android:padding="2dp">

 <textview android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="3dp" android:gravity="center_vertical" android:text="first description" android:textcolor="#000000" android:textsize="@dimen/smallSize" android:textstyle="bold">

 <textview android:id="@+id/firstText" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="3dp" android:text="test test test test test test test test test test test test test test test test test test test test test test " android:textcolor="#000000" android:textsize="@dimen/smallSize">
 </textview></textview></tablerow>

 <tablerow android:id="@+id/secondContainer" android:layout_width="match_parent" android:layout_height="wrap_content" android:padding="2dp">

 <textview android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="3dp" android:gravity="center_vertical" android:text="second description" android:textcolor="#000000" android:textsize="@dimen/smallSize" android:textstyle="bold">

 <textview android:id="@+id/secondText" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="3dp" android:text="test2 test2 test2 test2 test2 test2 test2 test2 test2 test2 test2 test2 test2 test2 test2 test2 test2 test2 test2 " android:textcolor="#000000" android:textsize="@dimen/smallSize">
 </textview></textview></tablerow>
 </tablelayout>
 </scrollview>

 <android.support.v4.view.viewpager xmlns:tools="http://schemas.android.com/tools" android:id="@+id/pagerOnTest" android:layout_width="match_parent" android:layout_height="0px" android:layout_weight="0.6" tools:context=".TestActivity">
 </android.support.v4.view.viewpager>
 </linearlayout>
</relativelayout>

Если вы посмотрите на ширину, занятую полями @id/firstText и @id/secondText вы увидите, что правая часть TextView находится за пределами экрана.

Любая помощь будет оценена по этому поводу. Благодарю!

4 ответа

Это должно сработать для вас, используя вес и вес макета и установив ширину таблицы для соответствия родительскому и ширине текста в 0dp, чтобы она динамически отображалась:

<tablelayout android:id="@+id/tableAtTest" android:layout_width="match_parent" android:layout_height="wrap_content" android:weightsum="2">

 <tablerow android:id="@+id/firstContainer" android:layout_width="match_parent" android:layout_height="wrap_content" android:padding="2dp">

 <textview android:layout_width="0dp" android:layout_height="wrap_content" android:layout_margin="3dp" android:gravity="center_vertical" android:text="first description" android:textcolor="#000000" android:textstyle="bold" android:layout_weight="1">

 <textview android:id="@+id/firstText" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_margin="3dp" android:text="test test test test test test test test test test test test test test test test test test test test test test " android:textcolor="#000000" android:layout_weight="1">

 </textview></textview></tablerow>

</tablelayout>


Вам нужно добавить внутренний контейнер в TableRow. TextViews не будут взаимодействовать друг с другом, если не указано в вашем макете.

Вы можете добавить TextViews в RelativeLayout и добавить свойство компоновки компонентов в строку "value", чтобы всегда быть справа от строки "key".

android:layout_toRightOf="@+id/firstText"


\n будет работать, но если вам это нужно динамически, тогда вы думаете, что текст должен иметь определенное выравнивание (оправданно). Невозможно обосновать текст на Android без сторонних библиотек.

Некоторое время назад я нашел некоторые библиотеки Github, здесь и здесь.


Используйте \n для принудительного разрыва строки.

как это:

android:text="test test test test\ntest test test test test test test\ntest test test test test test\ntest test test test test"

не тестировали его сейчас, но он должен работать

... если вы хотите, чтобы он динамически пытался:

android:scrollHorizontally="false"

на текст... но я не пробовал

licensed under cc by-sa 3.0 with attribution.