是否在recycleView中使用TextView Ellipsize

时间:2017-07-25 08:35:26

标签: android android-recyclerview textview

如果文本视图已被椭圆化,我有问题要检查。我在循环视图中定义了项目的布局,我必须检查,如果文本是椭圆化的,如果是,则隐藏按钮。我找到了解决方案,在哪里可以从文本视图中获取布局并检查它是否已经过椭圆化,但在循环视图中的bind方法中,它总是返回false。你有想法的人,我怎么做?

Layout l = textview.getLayout();
 if (l != null) {
 int lines = l.getLineCount();
if (lines > 0)
    if (l.getEllipsisCount(lines-1) > 0)
        Log.d(TAG, "Text is ellipsized");
}

此代码对我不起作用。

3 个答案:

答案 0 :(得分:1)

在您的适配器中尝试

    holder.textView.post(new Runnable() {
            @Override
            public void run() {
                if (holder.textView.getLayout() != null) {
                    if (widthText == 0) {
                        widthText = holder.textView.getWidth();
                    }
                    boolean isEllipsize = !holder.textView.getText().toString().equalsIgnoreCase(holder.textView.getLayout().getText().toString());
                } else {
                    Paint paint = new Paint();
                    paint.setTextSize(holder.textView.getTextSize());
                    final float size = paint.measureText(holder.textView.getText().toString());
                    boolean isEllipsize = (int) (size / maxLine) > widthText;
                }
            }
        });

如果您想阅读更多文本(如果文字太长),可以使用以下库: https://github.com/bravoborja/ReadMoreTextView

答案 1 :(得分:0)

如另一个SO post中所述:

  

这仅适用于布局阶段,否则返回的布局将为null,因此请在代码中的适当位置调用此方法。

确保在文本布局后调用(onCreate之后)!

答案 2 :(得分:0)

试试这个,

  <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:ellipsize="end"
            android:lines="1" />