【问题标题】:Is it possible to know the number of visible words? not full length?是否有可能知道可见单词的数量?不是全长?
【发布时间】:2020-10-26 00:08:45
【问题描述】:

是否可以知道可见单词的数量?不是全长?

我从 100 个单词添加到 textView 字符串。但可见只有10个字。我怎么知道只有 10 个字?

Log.e("asdas", String.valueOf(messageView.length()));

不工作

对不起,如果这个问题太复杂:((

【问题讨论】:

  • 我不认为你可以做到这一点
  • XY 问题。你想解决什么问题?
  • 我也明白了。由于长度是完整的长度
  • 我要继续发文snag.gy/WVrkN.jpg
  • “可见”是什么意思?是什么让文字“不可见”?

标签: android textview


【解决方案1】:

我不知道你为什么需要这个,但它就是这样:

int start = textView.getLayout().getLineStart(0);
int end = textView.getLayout().getLineEnd(textView.getLineCount() - 1);
String displayed = textView.getText().toString().substring(start, end);
int visibleWords = displayed.split(" ").length

【讨论】:

  • 不是! int start = messageView.getLayout().getLineStart(1);原因:com.example.Poetry.PageAuthors.SetAuthorText(PageAuthors.java:116) 处的 java.lang.NullPointerException 这不起作用。
  • 你看懂代码了吗?或者只是将其放入您的代码中并期望工作? getLayout() 返回的内容是否与 null 不同?
【解决方案2】:

对于任何有兴趣并获得 NullPointerException 的人,这是 Christian 回答的一个工作示例:

    ViewTreeObserver vto = textView.getViewTreeObserver();
        vto.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
            @Override
            public void onGlobalLayout() {
                int start = textView.getLayout().getLineStart(0);
                int end = textView.getLayout().getLineEnd(textView.getLineCount() - 1);
                String displayed = textView.getText().toString().substring(start, end);
                int visibleWords = displayed.split(" ").length;
            }
        });

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多