0

我有一个EditText属性 inputType 设置为 textMultiLine 的字段,这会将文本分成几行,到目前为止还不错。我附上了一个TextWatcherEditText所以我可以检查是否有任何变化。在 afterTextChanged 方法中,我想检查一行文本何时被分成 2 行,但 textMultiLine 属性没有添加新行字符,所以我的问题是:

如果没有换行符,如何检查EditText输入类型属性设置为 textMultiLine 的文本已写入多少行?

4

2 回答 2

2

无需使用Runnable或发布到消息队列。只需调用EditText.getLineCount()您的afterTextChanged()方法:

final EditText editText = /* your EditText here */;
editText.addTextChangedListener(new TextWatcher() {
    ...
    @Override
    public void afterTextChanged(Editable editable) {
        int numLines = editText.getLineCount();
        // your code here
    }
});
于 2017-09-18T21:17:35.230 回答
1

尝试这个:

editText.post(new Runnable() {
    @Override
    public void run() {
        Log.d(TAG, "Line count: " + editText.getLineCount());
    }
});

getLineCount()editText渲染完成后将在 UI 线程上调用。

于 2017-09-18T21:08:58.677 回答