TextView中的多行淡化省略号

时间:2013-03-01 02:19:46

标签: android textview

我可以通过设置android:ellipsize =" end"来创建一个多行TextView,其文本被省略,并且我可以创建一个单行TextView,其文本通过设置android淡出: ellipsize ="字幕&#34 ;.但是当TextView中有多行时,字幕设置不起作用。

有没有办法通过淡出多行TextView中的最后一行来截断文本?

编辑:我能够使用两个单独的TextView进行一种hacky实现,并向第一个添加一个OnLayoutChangeListener来检查文本是否会超过X行数,然后在那里剪切文本并放入剩余部分进入第二个TextView,它仅限于一行,因此可以使用ellipsize = marquee淡出。

<TextView
    android:id="@+id/text_one"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
/>
<TextView
    android:id="@+id/text_two"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:ellipsize="marquee"
    android:singleLine="true"
/>
mTextOne = (TextView) v.findViewById(R.id.text_one);
mTextTwo = (TextView) v.findViewById(R.id.text_two);

mTextOne.addOnLayoutChangeListener(new OnLayoutChangeListener() {
    @Override
    public void onLayoutChange(View v, int left, int top, int right,
            int bottom, int oldLeft, int oldTop, int oldRight, int oldBottom) {
        if (mTextOne.getLineCount() > 4) {
            int start = mTextOne.getLayout().getLineStart(3);
            String twoText = mTextOne.getText().toString().substring(start);
            mTextTwo.setText(twoText);
            mTextOne.setMaxLines(3);
        }
    }
});

不幸的是,我希望为列表中的每个项目实现此功能,但我无法找到方法。我只是在静态页面上使用两个简单TextView的情况下才能使用它。

0 个答案:

没有答案