在我的android应用程序中,我想要一个EditText
但光标闪烁的android:editable="false"
。“可编辑”设置为false后,光标闪烁似乎不起作用。
我只想使用我自己的键盘小部件(不是系统的软键盘),并保持光标闪烁。
有什么办法使这成为可能吗?
最佳答案
也许试着完全去掉xml属性android:editable
,然后结合下面的内容
保持光标闪烁并防止触摸事件弹出本机输入法(键盘)。
/*customized edittext class
* for being typed in by private-to-your-app custom keyboard.
* borrowed from poster at http://stackoverflow.com/questions/4131448/android-how-to-turn-off-ime-for-an-edittext
*/
public class EditTextEx extends EditText {
public EditTextEx(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
public boolean onCheckIsTextEditor() {
return false; //for some reason False leads to cursor never blinking or being visible even if setCursorVisible(true) was called in code.
}
}
步骤2
将上面的方法改为
return true;
步骤3
向上述类中添加另一个方法。
@Override
public boolean isTextSelectable(){
return true;
}
步骤4
在这个类的实例被实例化并调用的另一个位置,我添加了一个新的touch事件处理程序
viewB.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent event) {
viewB.setCursorVisible(true);
return false;
}
});
步骤5检查以确保XML和/或EditText实例化代码将IME/键盘类型声明为“none”。我没有确认相关性,但我也使用下面的可聚焦属性。
<questionably.maybe.too.longofa.packagename.EditTextEx
android:id="@+id/editText1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:focusable="true"
android:focusableInTouchMode="true"
android:inputType="none">
很抱歉有这么多XML属性。我的代码使用它们,在
viewB
中进行测试,并得到结果。希望这有帮助。