聚焦 EditText 时如何使软键盘无效
How can I make the soft keyboard invalid when an EditText is focused
当我单击 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);
}
});
在这段代码中,当我点击一次时键盘没有出现。但是当我连续点击很多次时,键盘出现了。
我该如何改进它?
请告诉我该怎么做。谢谢。
键:
onCheckIsTextEditor()
检查调用的视图是否是文本编辑器,在这种情况下自动显示软输入 window 是有意义的。如果此视图是文本编辑器,则此 Returns 为真。所以让我们改变它!然后键盘没有出现:)
创建您自己的 class
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();
}
}
});
当我单击 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);
}
});
在这段代码中,当我点击一次时键盘没有出现。但是当我连续点击很多次时,键盘出现了。
我该如何改进它? 请告诉我该怎么做。谢谢。
键:
onCheckIsTextEditor()
检查调用的视图是否是文本编辑器,在这种情况下自动显示软输入 window 是有意义的。如果此视图是文本编辑器,则此 Returns 为真。所以让我们改变它!然后键盘没有出现:)
创建您自己的 class
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();
}
}
});