TextView溢出未正确处理

时间:2014-07-20 15:54:06

标签: android overflow textview android-tablelayout

我正在使用包含TableRows的TableLayout。 TableLayout:

        <TableLayout
            android:layout_width="wrap_content"
            android:layout_height="fill_parent"
            android:background="@drawable/window"
            android:minWidth="256dp"
            android:id="@+id/charStanceList"></TableLayout>

这些行是从这个xml文件中膨胀的:

<TableRow xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="match_parent">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="None"
        android:id="@+id/stanceHands"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:textColor="@color/list_text" />
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="None"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:id="@+id/stances"
        android:textColor="@color/list_text" />

</TableRow>

以下是用于创建行的代码:

    public TableRow createTableRow(Context context) {
        TableRow row =(TableRow) ((LayoutInflater) context.getSystemService( Context.LAYOUT_INFLATER_SERVICE )).inflate(R.layout.stance_list_row,null);
        TextView hands=(TextView)row.findViewById(R.id.stanceHands);

        hands.setText(RHand + LHand);

        TextView stancesView =(TextView)row.findViewById(R.id.stances);

        MovementMethod movementMethod = stancesView.getMovementMethod();
        if ((movementMethod == null) || !(movementMethod instanceof LinkMovementMethod))
        {
            stancesView.setMovementMethod(LinkMovementMethod.getInstance());
        }
        SpannableString finalss=new SpannableString("");
        for (Stance s : stances) {
            SpannableString ss = new SpannableString(s.getName());

            class StanceLink extends ClickableSpan{
                Stance stance;
                @Override
                public void onClick(View view) {
                    Log.i("Clicked", "clicked on stance "+stance.getName()+" of ClassID "+stance.ClassID);
                }
                public void setStance(Stance st){
                    stance=st;
                }
            }
            StanceLink link=new StanceLink();
            link.setStance(s);
            ss.setSpan(link, 0, s.getName().length(), Spannable.SPAN_EXCLUSIVE_INCLUSIVE  );
            finalss= new SpannableString(TextUtils.concat(TextUtils.concat(finalss,ss),"\n"));
        }
        stancesView.setText(finalss);
        return row;
    }

当字符串太宽时插入断行,但其中一部分将被隐藏(右侧)。在这张图片中使用的文字是:五本武术书 - ...... &#34;艺术 - &#34;似乎溢出,所以我们无法看到它。 以下是问题的屏幕截图

screenshot

更改Ellipsize并不起作用。

1 个答案:

答案 0 :(得分:0)

我修复了它,感谢android:shrinkColumns并将宽度更改为match_parent

tablelayout:

        <TableLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="@drawable/window"
            android:minWidth="256dp"
            android:id="@+id/charStanceList"
            android:shrinkColumns="1"></TableLayout>

<TableRow xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="None"
        android:id="@+id/stanceHands"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:textColor="@color/list_text" />
    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="None"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:id="@+id/stances"
        android:textColor="@color/list_text" />

</TableRow>