我有一个TextView,当以编程方式填充单词时,该行不会正确换行。
TextView
这是正在发生的事情:
| Hi I am an examp | | le of a string t | | hat is not break | | ing correctly on | | words |
我要这个:
| Hi I am an | | example of a | | string that is | | breaking | | correctly on | | words |
String mQuestion = "Hi I am an example of a string that is breaking correctly on words"; mTextView.setText(mQuestion);
<LinearLayout android:id="@+id/questionContainer" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" > <TextView android:id="@+id/questionHeaderTextView" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@color/header_bg" android:paddingBottom="10dp" android:paddingLeft="25dp" android:paddingTop="10dp" android:text="@string/category_hint" android:textAppearance="?android:attr/textAppearanceLarge" /> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" > <Space android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight=".05" /> <!-- THIS ONE WILL NOT WRAP !--> <TextView android:id="@+id/questionHolderTextView" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight=".9" android:layout_marginBottom="15dp" android:layout_marginTop="15dp" android:layout_marginLeft="15dp" android:layout_marginRight="15dp" android:text="@string/question_holder" android:singleLine="false" android:scrollHorizontally="false" android:ellipsize="none" android:textSize="20sp" /> <Space android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight=".05" /> </LinearLayout> <View android:layout_width="match_parent" android:layout_height="0.5dp" android:layout_marginTop="5dp" android:background="@color/black" /> </LinearLayout> <LinearLayout android:id="@+id/answerContainer" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" android:visibility="visible" > </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:layout_marginTop="25dp" android:gravity="center" > <Button android:id="@+id/nextButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="25dp" android:text="@string/next" /> </LinearLayout>
首先,您可以使用绘制油漆TextView.getPaint(),然后每次添加一个新单词(嗨,我,我等),调用measureText油漆。如果结果长度大于TextView的可用宽度,请\n在新单词之前添加一个。重置数据并重复步骤。
TextView.getPaint()
measureText
\n