如何使 textview 输出与多行编辑文本相同?
How to make textview output the same as a multilined edittext?
我在 activity 上有一个用于多行注释的 EditText。然后我将这个值存储到一个数据库中,在 ListView 上 activity 我使用自定义游标适配器再次显示该值。
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") 是否存在,但我仍然只能阅读第一行。在另一个 Whosebug 线程上,我看到一个解决方案是这样做的:
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>
android:layout_alignBottom="@+id/textView_raybae"
这条线结合
android:layout_below="@+id/textView_out"
导致您的 textView_comment
大小严格介于 TextView 的底线之间。尝试删除:
android:layout_alignBottom="@+id/textView_raybae"
并改变
android:layout_below="@+id/textView_out"
到
android:layout_below="@+id/textView_raybae"
你的代码看起来不错尝试替换
temp.replace("\n", "\n")
to
replace("\n", System.getProperty("line.separator"))
如果您的视图有足够的 space 来呈现其他 lines.To 调试,请检查使用视图层次结构我建议首先修复您的文本视图行,例如 (android:lines="2" ) 并查看结果。
我在 activity 上有一个用于多行注释的 EditText。然后我将这个值存储到一个数据库中,在 ListView 上 activity 我使用自定义游标适配器再次显示该值。
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") 是否存在,但我仍然只能阅读第一行。在另一个 Whosebug 线程上,我看到一个解决方案是这样做的:
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>
android:layout_alignBottom="@+id/textView_raybae"
这条线结合
android:layout_below="@+id/textView_out"
导致您的 textView_comment
大小严格介于 TextView 的底线之间。尝试删除:
android:layout_alignBottom="@+id/textView_raybae"
并改变
android:layout_below="@+id/textView_out"
到
android:layout_below="@+id/textView_raybae"
你的代码看起来不错尝试替换
temp.replace("\n", "\n")
to
replace("\n", System.getProperty("line.separator"))
如果您的视图有足够的 space 来呈现其他 lines.To 调试,请检查使用视图层次结构我建议首先修复您的文本视图行,例如 (android:lines="2" ) 并查看结果。