Возможно, попробуйте полностью пропустить атрибут xml android:editable
, а затем попробуйтеследуя в комбинации с
, продолжайте мигать курсор и , чтобы предотвратить появление сенсорных событий при вызове собственного IME (клавиатуры) ..
/*customized edittext class
* for being typed in by private-to-your-app custom keyboard.
* borrowed from poster at /2859622/android-kak-otklychit-ime-dlya-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
, вызываемого в коде.}
}
Шаг 2 измените вышеприведенный метод на: return true;
Шаг 3 Добавьте другой метод к вышеуказанному классу.
@ Переопределите public boolean isTextSelectable (){верни истину;}
Шаг 4 В другом месте, где экземпляр этого класса был создан и вызван viewB
Я добавил новый обработчик сенсорных событий
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.Мой код использует их все, тестирование в 4.2.1
, и дает результаты.Надеюсь, это поможет.