TableLayout 和 TableRow 中的 TextView 不换行文本
TextView inside TableLayout and TableRow doesn't wrap text
我的应用程序片段有一个小问题,该片段显示了 Google 地方的详细信息。问题在于显示其他用户的评论。
如图所示,评论文本视图中的文本未完全显示。有没有办法让textview换行?
问题图片:
http://postimg.org/image/84frbxd23/
我正在通过代码动态添加 TableRow 和 TextView。我尝试了以下操作:
- 将椭圆大小设置为结束
- 将可滚动设置为真
- 将 maxLines 设置为 10
这是我的布局:
<TableLayout
android:id="@+id/reviews"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_below="@+id/openhours"
android:layout_marginTop="20dp"
android:layout_alignParentBottom="true"
android:layout_alignParentStart="true">
</TableLayout>
下面是添加行和文本视图的代码:
//Dinamically create table
TableLayout table = (TableLayout)rootView.findViewById(R.id.reviews);
TableRow tr_head = new TableRow(rootView.getContext());
tr_head.setBackgroundColor(Color.GRAY);
tr_head.setLayoutParams(new TableLayout.LayoutParams(
TableLayout.LayoutParams.FILL_PARENT,
TableLayout.LayoutParams.WRAP_CONTENT));
TextView label_author = new TextView(rootView.getContext());
label_author.setText("Author");
label_author.setTextColor(Color.WHITE);
label_author.setPadding(5, 5, 5, 5);
tr_head.addView(label_author);// add the column to the table row here
TextView label_comment = new TextView(rootView.getContext());
label_comment.setText("Comment"); // set the text for the header
label_comment.setTextColor(Color.WHITE); // set the color
label_comment.setPadding(5, 5, 5, 5); // set the padding (if required)
tr_head.addView(label_comment); // add the column to the table row here
table.addView(tr_head, new TableLayout.LayoutParams(
TableLayout.LayoutParams.FILL_PARENT,
TableLayout.LayoutParams.WRAP_CONTENT));
//if it has reviews display them
if(currentP.hasReviews()) {
for (Review r : currentP.getReviews()) {
TableRow tr = new TableRow(rootView.getContext());
tr.setLayoutParams(new TableLayout.LayoutParams(
TableLayout.LayoutParams.FILL_PARENT,
TableLayout.LayoutParams.WRAP_CONTENT));
//Create two columns to add as table data
// Create a TextView to add date
TextView author = new TextView(rootView.getContext());
author.setText(r.getAuthor());
author.setPadding(2, 0, 5, 0);
author.setTextColor(Color.BLACK);
author.setHorizontalScrollBarEnabled(false);
tr.addView(author);
TextView comment = new TextView(rootView.getContext());
comment.setPadding(5, 0, 5, 0);
comment.setText(r.getReview());
comment.setTextColor(Color.BLACK);
comment.setEllipsize(TextUtils.TruncateAt.END);
comment.setMaxLines(10);
comment.setId(r.getId());
tr.addView(comment);
// finally add this to the table row
table.addView(tr, new TableLayout.LayoutParams(
TableLayout.LayoutParams.FILL_PARENT,
TableLayout.LayoutParams.WRAP_CONTENT));
}
尝试将 LayoutParams 设置为 label_comment
。设置 WRAP_CONTENT
为宽度。
此外,我建议您使用 MATCH_PARENT
而不是 FILL_PARENT
,因为最后一个已弃用。
您可能希望在评论中添加 layout_width
参数并将其设置为 wrap_content
。
我会将 author TextView 的宽度设置为常量,这样它就不会扩展太多并缩小 Comment TextView。对于 Comment TextView 设置给定的布局参数,以便它可以垂直扩展并且不会被截断。
// Create a TextView to add date
TextView author = new TextView(this);
author.setText(authorName);
author.setPadding(2, 0, 5, 0);
author.setTextColor(Color.BLACK);
author.setHorizontalScrollBarEnabled(false);
author.setWidth(150); // good idea to set width for author name so that its fixed
tr.addView(author);
TextView comment = new TextView(this);
comment.setPadding(5, 0, 5, 0);
comment.setText(bigComment);
comment.setTextColor(Color.BLACK);
comment.setMaxLines(10);
// Provide this parameter so that the whole text can be seen with no cutoff
comment.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.FILL_PARENT,
TableRow.LayoutParams.WRAP_CONTENT,1.0f));
tr.addView(comment);
我的应用程序片段有一个小问题,该片段显示了 Google 地方的详细信息。问题在于显示其他用户的评论。
如图所示,评论文本视图中的文本未完全显示。有没有办法让textview换行?
问题图片: http://postimg.org/image/84frbxd23/
我正在通过代码动态添加 TableRow 和 TextView。我尝试了以下操作:
- 将椭圆大小设置为结束
- 将可滚动设置为真
- 将 maxLines 设置为 10
这是我的布局:
<TableLayout
android:id="@+id/reviews"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_below="@+id/openhours"
android:layout_marginTop="20dp"
android:layout_alignParentBottom="true"
android:layout_alignParentStart="true">
</TableLayout>
下面是添加行和文本视图的代码:
//Dinamically create table
TableLayout table = (TableLayout)rootView.findViewById(R.id.reviews);
TableRow tr_head = new TableRow(rootView.getContext());
tr_head.setBackgroundColor(Color.GRAY);
tr_head.setLayoutParams(new TableLayout.LayoutParams(
TableLayout.LayoutParams.FILL_PARENT,
TableLayout.LayoutParams.WRAP_CONTENT));
TextView label_author = new TextView(rootView.getContext());
label_author.setText("Author");
label_author.setTextColor(Color.WHITE);
label_author.setPadding(5, 5, 5, 5);
tr_head.addView(label_author);// add the column to the table row here
TextView label_comment = new TextView(rootView.getContext());
label_comment.setText("Comment"); // set the text for the header
label_comment.setTextColor(Color.WHITE); // set the color
label_comment.setPadding(5, 5, 5, 5); // set the padding (if required)
tr_head.addView(label_comment); // add the column to the table row here
table.addView(tr_head, new TableLayout.LayoutParams(
TableLayout.LayoutParams.FILL_PARENT,
TableLayout.LayoutParams.WRAP_CONTENT));
//if it has reviews display them
if(currentP.hasReviews()) {
for (Review r : currentP.getReviews()) {
TableRow tr = new TableRow(rootView.getContext());
tr.setLayoutParams(new TableLayout.LayoutParams(
TableLayout.LayoutParams.FILL_PARENT,
TableLayout.LayoutParams.WRAP_CONTENT));
//Create two columns to add as table data
// Create a TextView to add date
TextView author = new TextView(rootView.getContext());
author.setText(r.getAuthor());
author.setPadding(2, 0, 5, 0);
author.setTextColor(Color.BLACK);
author.setHorizontalScrollBarEnabled(false);
tr.addView(author);
TextView comment = new TextView(rootView.getContext());
comment.setPadding(5, 0, 5, 0);
comment.setText(r.getReview());
comment.setTextColor(Color.BLACK);
comment.setEllipsize(TextUtils.TruncateAt.END);
comment.setMaxLines(10);
comment.setId(r.getId());
tr.addView(comment);
// finally add this to the table row
table.addView(tr, new TableLayout.LayoutParams(
TableLayout.LayoutParams.FILL_PARENT,
TableLayout.LayoutParams.WRAP_CONTENT));
}
尝试将 LayoutParams 设置为 label_comment
。设置 WRAP_CONTENT
为宽度。
此外,我建议您使用 MATCH_PARENT
而不是 FILL_PARENT
,因为最后一个已弃用。
您可能希望在评论中添加 layout_width
参数并将其设置为 wrap_content
。
我会将 author TextView 的宽度设置为常量,这样它就不会扩展太多并缩小 Comment TextView。对于 Comment TextView 设置给定的布局参数,以便它可以垂直扩展并且不会被截断。
// Create a TextView to add date
TextView author = new TextView(this);
author.setText(authorName);
author.setPadding(2, 0, 5, 0);
author.setTextColor(Color.BLACK);
author.setHorizontalScrollBarEnabled(false);
author.setWidth(150); // good idea to set width for author name so that its fixed
tr.addView(author);
TextView comment = new TextView(this);
comment.setPadding(5, 0, 5, 0);
comment.setText(bigComment);
comment.setTextColor(Color.BLACK);
comment.setMaxLines(10);
// Provide this parameter so that the whole text can be seen with no cutoff
comment.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.FILL_PARENT,
TableRow.LayoutParams.WRAP_CONTENT,1.0f));
tr.addView(comment);