如何在单击EditText时隐藏键盘

时间:2018-03-29 23:03:23

标签: android android-edittext android-widget listener

我有多个文本视图和一个编辑文本小部件。

这是我的问题: 我的应用程序启动后,当我单击EditText时,它会显示键盘。我已经设置了onTouchListener执行某些操作,这是正常的。

但是,在我的textView onClick监听器中,每当我点击EditText小部件下面的任何textView时,我都会将EditText的焦点设置为false。这工作正常,但键盘不会消失。

那么如何在我的text_view onClicklistener中将focusable()设置为false后隐藏键盘。

我不打算禁用键盘,这就是我想要的;点击显示键盘的EditText后,如果我点击下面的textView,我想将EditText的setFocusable设置为false(这是有效的)并隐藏键盘(我不知道如何实现)。

这是我的代码

public class FacilityScreen extends AppCompatActivity {

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

    EditText editText = (EditText) findViewById(R.id.enter_location);
    editText.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View view, MotionEvent motionEvent) {
            view.setFocusable(true);
            view.setFocusableInTouchMode(true);

            if (MotionEvent.ACTION_UP == motionEvent.getAction()) {

                    TextView textView = (TextView) findViewById(R.id.enter_location);
                    textView.setBackgroundColor(Color.TRANSPARENT);
                }
            }
            return false;
        }
    });

}

public void text_view(View view) {
    EditText editText = (EditText) findViewById(R.id.enter_location);
    editText.setFocusable(false);

        TextView textView = (TextView) findViewById(R.id.my_text);
        textView.setBackgroundColor(Color.parseColor("#3F51B5"));
}

1 个答案:

答案 0 :(得分:1)

之后将其添加到您的方法中
editText.setFocusable(false);
editText.clearFocus();

如果不起作用,请使用以下方法关闭键盘

 public static void dismissKeyboard(EditText editText, Context context) {
        InputMethodManager imm = (InputMethodManager)context.getSystemService(Context.INPUT_METHOD_SERVICE);
        imm.hideSoftInputFromWindow(editText.getWindowToken(), 0);
    }

希望这会有所帮助。