TableLayout和TableRow中的TextView不会包装文本

时间:2015-01-02 15:29:18

标签: java android layout textview android-tablelayout

我的应用程序中的片段存在一个小问题,该片段显示有关Google Place的详细信息。问题在于显示其他用户的评论。

如此图所示,评论文本视图中的文本未完全显示。有没有办法让textview转到新的一行?

问题图片: http://postimg.org/image/84frbxd23/

我从代码中动态添加TableRow和TextView。我尝试过以下事项:

  1. 将ellipsize设置为结束
  2. 将scrollable设置为true
  3. 将maxLines设置为10
  4. 这是我的布局:

    <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));
    
                }
    

3 个答案:

答案 0 :(得分:1)

我会将作者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);

答案 1 :(得分:0)

尝试将LayoutParams设置为label_comment。将WRAP_CONTENT设置为宽度。

此外,我建议您使用MATCH_PARENT代替FILL_PARENT,因为最后一个已被弃用。

答案 2 :(得分:0)

您可能需要在评论中添加layout_width参数,并将其设置为wrap_content