TextView不能理解换行符

时间:2018-06-20 20:14:32

标签: java android textview line-breaks

我有一个Android应用程序,该应用程序从Oracle数据库(字符集US7ASCII)中检索信息(注释),此信息通过使用FileWriter的函数存储在系统上,然后在被请求时,将其读取并填充TextView另一个功能

问题是:即使文本上很难有“ \ n”,TextView也无法将其识别为换行符。 我对字符串进行了替换测试,以检查“ \ n”是否存在,实际上是否存在。
我还尝试直接设置“ Teste \ nTeste2”之类的文本,并且可以正常工作。

好吧,不管您相信与否,下面的黑引号都存在与我的TextView相同的问题。

  

巴塔酒作为克拉姆斯的全部储备   被误称为双子座,是玛格丽娜玛格丽娜在汽车上   Acrescente o leite e a farinha de trigo aos poucos,塞姆帕拉德巴特   阿迪西翁·阿尔蒂莫·波拉蒂莫   Despeje a massa em uma forma grande de furo Central untada e Enfarinhada   Asse em fornomádio180°C,preaquecido,por aproximadamente 40 minutos ou ao furar o bolo com garfo,este saia limpo

我尝试过的替换:

   The first 4 replacements did not work
string = string.replace("\r\n", "\n"); 
string = string.replace("\\n","\n");
string = string.repalce("\\\n","\n");
string = string.replace("\n", System.getProperty(System.lineSeparator()));
<br>
string = string.replace("\n", "BANANA"); // this one actually worked, but I cant breakline with a BANANA, right? Anyway...

这是我用来更新TextView的功能:

public void update_details(View view, String description, String comments){
    TextView tv = view.findViewById(R.id.if_description);
    tv.setText(description);

    TextView tv2 = view.findViewById(R.id.if_comments);
    tv2.setText(comments);
}

这是menu03_tab2中的xml,其中包含我要设置文本的注释

    <?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout 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="match_parent"
    android:layout_height="match_parent"
    tools:layout_editor_absoluteY="81dp">

    <LinearLayout
        android:id="@+id/linearLayout5"
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:layout_margin="10dp"
        android:orientation="vertical"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent">

        <TableRow
            android:layout_width="match_parent"
            android:layout_height="5dp"
            android:layout_marginBottom="5dp"
            android:layout_marginTop="60dp"
            android:background="@color/netcracker_1">

        </TableRow>

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:text="@string/if_description"
            android:textSize="15dp"
            android:textStyle="bold" />

        <ScrollView
            android:layout_width="match_parent"
            android:layout_height="140dp"
            android:background="#d3d3d3">

            <TextView
                android:id="@+id/if_description"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:background="#d3d3d3" />
        </ScrollView>

        <TableRow
            android:layout_width="match_parent"
            android:layout_height="5dp"
            android:layout_marginBottom="5dp"
            android:layout_marginTop="5dp"
            android:background="@color/netcracker_1">

        </TableRow>


        <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:text="@string/if_comments"
        android:textSize="15dp"
        android:textStyle="bold"/>

    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#d3d3d3">

        <TextView
            android:id="@+id/if_comments"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="#d3d3d3" />
    </ScrollView>
</LinearLayout>

提前感谢您的时间。

1 个答案:

答案 0 :(得分:0)

如果确实存在换行符,请使用此:

public String restore(String s) {
    String[] lines = s.split("\n");

    String result = "";

    for (int i = 0; i < lines.length; i++) {
        result += lines[i].trim() + "\n";
    }

    return result.trim();
}

然后是tv.setText(restore(description));

检查是否有区别。