如何聚焦EditText时,如何使软键盘无效

时间:2016-12-31 04:55:30

标签: android soft-keyboard

单击EditText时,会出现软键盘。我点击EditText时不想显示键盘,但是,我希望得到EditText的力量。我想在没有键盘的情况下进行编辑。

editText.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        InputMethodManager imm = (InputMethodManager) 
        getSystemService(Context.INPUT_METHOD_SERVICE);
        imm.hideSoftInputFromWindow(view.getWindowToken(),
        InputMethodManager.HIDE_NOT_ALWAYS);
    }
});

在此代码中,单击一次后键盘不会出现。但是当我连续多次点击时会出现键盘。

我该如何改进? 请告诉我怎么做。谢谢。

1 个答案:

答案 0 :(得分:1)

密钥:

onCheckIsTextEditor()检查被调用的视图是否是文本编辑器,在这种情况下,为它自动显示软输入窗口是有意义的。如果此视图是文本编辑器,则返回true。所以让我们改变它!然后键盘不会出现:)

创建自己的课程

import android.content.Context;
import android.util.AttributeSet;
import android.widget.EditText;


public class NoImeEditText extends EditText {
    public NoImeEditText(Context context, AttributeSet attrs) {
        super(context, attrs);
    }
    @Override
    public boolean onCheckIsTextEditor() {
        return false;
    }
}

像这样设置你的xml

  <your.package.name.NoImeEditText
         android:textSize="17dp"
         android:textColor="#FFF"
         android:id="@+id/edit_query"
         android:layout_width="match_parent"
         android:layout_height="60dp" />

称之为

 editText = (NoImeEditText) findViewById(R.id.edit_query);

检查重点

editText.setOnFocusChangeListener(new View.OnFocusChangeListener() {
            @Override
            public void onFocusChange(View v, boolean hasFocus) {
                if(hasFocus){
                      // show your custom key pad and do your work 
                    Toast.makeText(getApplicationContext(), "got the focus", Toast.LENGTH_LONG).show();
                }else {
                    Toast.makeText(getApplicationContext(), "lost the focus", Toast.LENGTH_LONG).show();
                }
            }
        });