OnEditorActionListener可防止EditText多行

时间:2016-01-17 08:06:45

标签: android

如果不在edittext中添加侦听器,它会自动允许EditText中的多行,但由于edittext附加了与键处理程序相关的任何侦听器(例如KeyListener或OnEditorActionListener),因此这些侦听器会阻止edittext拥有多行并且无法移动无论我输入,都到下一行,

这是我的代码

<EditText
                android:id="@+id/editArticleContentForUpload"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="8"
                android:paddingLeft="10dp"
                android:paddingTop="10dp"
                android:background="@android:color/transparent"
                android:gravity="top|left"
                android:scrollbars="vertical"
                android:hint="Writing ! "

                android:inputType="textMultiLine"
                android:singleLine="false" />

这是我的java代码

OnEditorActionListener

editArticleContent.addTextChangedListener(new ArticleWatcher());
        editArticleContent.setImeActionLabel("Writing", KeyEvent.KEYCODE_ENTER);//
        editArticleContent.setOnEditorActionListener(new TextView.OnEditorActionListener() {
            @Override
            public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {

                Log.d("INFO", "KEY CODE : "+event.getKeyCode());
                Log.d("INFO", "ACTION ID : "+actionId);
                Log.d("INFO", "VIEW : "+v.getText().toString());
                v.setInputType(InputType.TYPE_TEXT_FLAG_IME_MULTI_LINE);
                return true;
            }
        });

以及KeyListener

class WritingEditKeyListener implements KeyListener{
    @Override
    public int getInputType() {
        return InputType.TYPE_TEXT_FLAG_IME_MULTI_LINE;
    }

    @Override
    public boolean onKeyDown(View view, Editable text, int keyCode, KeyEvent event) {
        if(event.getKeyCode() == event.KEYCODE_ENTER){
            Utilities.showToast(getApplicationContext(), "Hooray! ", 1000);
        }
        return false;
    }

    @Override
    public boolean onKeyUp(View view, Editable text, int keyCode, KeyEvent event) {
        return false;
    }

    @Override
    public boolean onKeyOther(View view, Editable text, KeyEvent event) {
        return false;
    }

    @Override
    public void clearMetaKeyState(View view, Editable content, int states) {

    }
}

提前谢谢你:)

1 个答案:

答案 0 :(得分:0)

我假设你想要的是当你试图在editText内写字时点击输入时能够转到下一行。

请试试这个

            <EditText
                android:id="@+id/editText2"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:inputType="textMultiLine"
                android:lineSpacingMultiplier="1"
                android:maxLines="10" />

在此edittext我可以按Enter进入下一行,虽然它现在不包含任何滚动条,您可以根据布局中的要求对其进行编辑