如何使textview输出与多行的edittext相同?

时间:2016-07-03 00:23:24

标签: android android-layout textview line-breaks multiline

我在一个用于多行注释的活动上有一个EditText。然后我将此值存储到数据库中,在ListView活动中,我使用自定义游标适配器再次显示该值。

bindView(View view, Context context, Cursor cursor) {
...
TextView comment = (TextView) view.findViewById(R.id.textView_comment);
comment.setText(cursor.getString(cursor.getColumnIndex("COMMENTS")));
...
}

示例EditText值:

//user input into EditText
line 1
line 2
line 3

//stored value
line 1\nline 2\nline 3

//TextView
line 1

但是在测试时,打开ListView时,只有注释TextView的第一行可见。我已经使用多个Log.v来验证换行符(" \ n")是否仍然可以读取第一行。在另一个stackoverflow线程上,我看到一个解决方案是这样做:

bindView(View view, Context context, Cursor cursor) {
...
TextView comment = (TextView) view.findViewById(R.id.textView_comment);
String temp = cursor.getString(cursor.getColumnIndex("COMMENTS"));
comment.setText(temp.replace("\\n", "\n"));
...
}

然而,结果仍然只是评论的第一行(见上文)。有人知道其他任何解决方案吗?

编辑:这里是listitem.xml文件的缩写版本:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:weightSum="1">

    <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:weightSum="1">

        ...

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textAppearance="?android:attr/textAppearanceLarge"
            android:text="Comments: "
            android:id="@+id/textView_raybae"
            android:layout_below="@+id/textView_out"
            android:layout_alignParentStart="true" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textAppearance="?android:attr/textAppearanceLarge"
            android:text="Thoughts"
            android:singleLine="false"
            android:id="@+id/textView_comment"
            android:layout_below="@+id/textView_out"
            android:layout_alignBottom="@+id/textView_raybae"
            android:layout_alignParentEnd="true"
            android:layout_toEndOf="@+id/textView_raybae" />

        ...

    </RelativeLayout>

</LinearLayout>

2 个答案:

答案 0 :(得分:0)

android:layout_alignBottom="@+id/textView_raybae"

这一行与

结合使用
android:layout_below="@+id/textView_out"

导致textView_comment严格的大小,因此TextViews的底线之间。尝试删除:

android:layout_alignBottom="@+id/textView_raybae"

并更改

android:layout_below="@+id/textView_out"

android:layout_below="@+id/textView_raybae"

答案 1 :(得分:0)

您的代码看起来很好,尝试替换

temp.replace("\\n", "\n")

to

replace("\\n", System.getProperty("line.separator"))

如果您的视图有足够的空间来渲染其他行,请使用视图层次结构进行检查。要调试我建议先修复文本视图行,例如(android:lines =&#34; 2&#34;)并查看结果。