Android 值为 textMultiLine 的 EditText inputType 属性如何断行?

How Android EditText inputType attribute with value textMultiLine breaks the lines?

我有一个 EditText 字段,其属性 inputType 设置为 textMultiLine,这可以将文本分成多行,到目前为止一切顺利。我将 TextWatcher 附加到 EditText 以便我可以检查是否有任何更改。在 afterTextChanged 方法中,我想检查一行文本何时被分成两行,但是 textMultiLine 属性没有添加新行字符,所以我的问题是:

在没有换行符的情况下,如何检查输入类型属性设置为 textMultiLine 的 EditText 中写入了多少行文本?

试试这个:

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

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

无需对消息队列使用 Runnable 或 post。只需在 afterTextChanged() 方法中调用 EditText.getLineCount()

final EditText editText = /* your EditText here */;
editText.addTextChangedListener(new TextWatcher() {
    ...
    @Override
    public void afterTextChanged(Editable editable) {
        int numLines = editText.getLineCount();
        // your code here
    }
});