繁体   English   中英

EditText:一旦用户完成输入,如何更改可见性?

[英]EditText:how to change visibility once the user has done finished typing?

用户停止键入或单击完成后,如何更改EditText视图的可见性? 我尝试这样做,但收到错误消息。

    package com.example.android.monopolycredit;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.view.inputmethod.EditorInfo;
import android.widget.EditText;
import android.widget.TextView;

public class LoginLobby extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login_lobby);

        final EditText usernameEditText = findViewById(R.id.usernameField);
        usernameEditText.setOnEditorActionListener(
                new EditText.OnEditorActionListener() {
                    @Override
                    public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
                        if (actionId == EditorInfo.IME_ACTION_SEARCH ||
                                actionId == EditorInfo.IME_ACTION_DONE ||
                                event.getAction() == KeyEvent.ACTION_DOWN &&
                                        event.getKeyCode() == KeyEvent.KEYCODE_ENTER) {
                            if (!event.isShiftPressed()) {
                                // the user is done typing.
                                usernameEditText.setVisibility(View.GONE);
                                return true; // consume.
                            }
                        }
                        return false; // pass on to other listeners.
                    }
                });
    }

}

任何帮助,将不胜感激。 我是android开发的新手。 提前致谢。 :)

用户停止键入后,如何更改EditText视图的可见性...

没有此类事件可以告诉您用户已停止键入。 即使用户停止键入,您仍然可以在该EditText字段中保持焦点 ,这意味着他可以继续键入。 因此,在这种情况下,您无法确定他是否真的停止输入文本。

或点击完成?

那已经有可能了。 为了收听键盘更改(例如完成的操作),只需将actionId == EditorInfo.IME_ACTION_DONE添加到现有代码中:

EditText usernameEditText = findViewById(R.id.usernameField);
usernameEditText.setOnEditorActionListener(new EditText.OnEditorActionListener() {
    @Override
    public boolean onEditorAction(TextView v, int actionId, KeyEvent event){
        if (actionId == EditorInfo.IME_ACTION_DONE && !event.isShiftPressed()) {
            // the user is done typing.
            usernameEditText.setVisibility(View.GONE);
            return true;
        }
        return false;
    }
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM