为了在不显示软键盘的情况下选择edittext,我放了edittext.textIsSelectable(true)
属性,我隐藏了软键盘。
当我再次尝试打开软键盘时,它无法打开。
我尝试在edittext中设置setFocusable(true)
但仍未打开键盘。
任何建议将不胜感激。
谢谢
答案 0 :(得分:3)
通过使用EditText的以下代码,您可以获得Cut/Copy/Paste
的活动
你必须创建如下所示的editText。你可以在事件触发后隐藏软键盘......
<com.example.textlink.EditTextMonitor
android:id="@+id/editText"
android:layout_width="fill_parent"
android:layout_height="100dp"
android:hint="EditText" />
在你的包中创建一个java文件......
public class EditTextMonitor extends EditText {
private final Context mcontext; // Just the constructors to create a new
// EditText...
public EditTextMonitor(Context context) {
super(context);
this.mcontext = context;
}
public EditTextMonitor(Context context, AttributeSet attrs) {
super(context, attrs);
this.mcontext = context;
}
public EditTextMonitor(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
this.mcontext = context;
}
@Override
public boolean onTextContextMenuItem(int id) {
// Do your thing:
boolean consumed = super.onTextContextMenuItem(id);
// React:
switch (id) {
case android.R.id.cut:
onTextCut();
break;
case android.R.id.paste:
onTextPaste();
break;
case android.R.id.copy:
onTextCopy();
}
return consumed;
}
/**
* Text was cut from this EditText.
*/
public void onTextCut() {
InputMethodManager imm = (InputMethodManager) getContext()
.getApplicationContext()
.getSystemService(Context.INPUT_METHOD_SERVICE);
imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0);
Toast.makeText(mcontext, "Event of Cut!", Toast.LENGTH_SHORT).show();
}
/**
* Text was copied from this EditText.
*/
public void onTextCopy() {
InputMethodManager imm = (InputMethodManager) getContext()
.getApplicationContext()
.getSystemService(Context.INPUT_METHOD_SERVICE);
imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0);
Toast.makeText(mcontext, "Event of Copy!", Toast.LENGTH_SHORT).show();
}
/**
* Text was pasted into the EditText.
*/
public void onTextPaste() {
InputMethodManager imm = (InputMethodManager) getContext()
.getApplicationContext()
.getSystemService(Context.INPUT_METHOD_SERVICE);
imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0);
Toast.makeText(mcontext, "Event of Paste!", Toast.LENGTH_SHORT).show();
}}
答案 1 :(得分:1)
不设置属性edittext.textIsSelectable(true)
您可以选择输入的文字并将其复制正确,为什么不盲目使用带有基本属性的edittext
答案 2 :(得分:1)
我找到了答案。
只需覆盖Edittext中的isTextSelectable()
方法。
如果您想打开键盘,请返回super.isTextSelectable()
。
如果您不想打开键盘,请返回true
。
就是这样。它对我有用。
答案 3 :(得分:0)
试试这个 用于显示软键盘
InputMethodManager imm = (InputMethodManager)
getSystemService(Context.INPUT_METHOD_SERVICE);
if(imm != null){
imm.toggleSoftInput(0, InputMethodManager.HIDE_IMPLICIT_ONLY);
}
隐藏SoftKeyboard -
val spark : SparkSession = ???
答案 4 :(得分:0)
要强制打开软键盘,请尝试此
((InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE)).toggleSoftInput(InputMethodManager.SHOW_FORCED, InputMethodManager.HIDE_IMPLICIT_ONLY);