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

标签 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);
    }
});

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

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

最佳答案

key :

onCheckIsTextEditor() 检查调用的 View 是否是文本编辑器,在这种情况下自动为其显示一个软输入窗口是有意义的。如果此 View 是文本编辑器,则返回 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();
                }
            }
        }); 

关于android - 聚焦 EditText 时如何使软键盘无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41405588/

相关文章:

android - UBS电缆中断了音频插孔的麦克风输入

javascript - 如果 jqgrid 比视口(viewport)大,如何使 jqgrid 在 android 中可访问

c# - 在 Monodroid/C# 中将 AsyncTask 转换为任务

python - 如何为 Windows 制作 T9 风格的屏幕键盘?

android - WebView 和软键盘问题

当我第二次单击它时,Android 键盘覆盖 EditText

android - 如何使用robotium单击软键盘的完成按钮?

android - 是否有可能从 fragment 中获取 `RecyclerView`?

java - 我没有从服务器 Android Java 获取 udp 包

android - 如何在 TEdit 处于焦点时隐藏(并再次显示)软键盘 DELPHI XE7