2016-04-08 2 views
3

Я не хочу, чтобы мягкая клавиатура появлялась при касании конкретного EditText. Но я все еще хочу показать мягкую клавиатуру по запросу пользователя (например, при нажатии кнопки) и разрешить пользователю редактировать текст. Я знаю, как показать/скрыть мягкую клавиатуру, я только не знаю, как предотвратить ее появление при прикосновении. Любое предложение, как это сделать?Как предотвратить появление мягкой клавиатуры при касании

Общая идея заключается в том, что пользователь будет в основном работать с выбором/позицией в тексте и только случайным образом вводить символы. Я не хочу, чтобы видимая сумма текста была уменьшена с помощью мягкой клавиатуры при выборе или навигации по тексту.

+0

Используйте их в вашем XML андроида: редактируемые = "ложь" android: focusable = "false", после чего вы можете показать диалоговое окно Alert, чтобы пользователь мог выбирать опции –

ответ

3

просто использовать

txtEdit.setShowSoftInputOnFocus(false); 

и когда вы хотите, чтобы включить эту функцию, реверс выше процесса

+0

Спасибо, setShowSoftInputOnFocus (false) работает. Я не уверен, почему все вещи отражения ... – Rediska

+0

@ Редиска, как вы сказали, отражение не требуется, но в студии Android, когда я пытался найти этот метод, он не был в списке предложений, и только если ваш api равен 21 или выше, вы может применить этот метод, –

0

в рамках деятельности в манифесте добавить код, приведенный ниже
андроида: windowSoftInputMode = "adjustPan"

+0

Это повлияет на каждый EditText в действии, а не на особенный. – Rediska

0

Попробуйте следующий код, он скрывает клавиатуру:

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN) 
+0

Во-первых, это не сработает, и во-вторых, я разрабатываю пользовательский компонент, поэтому изменять настройки на уровне приложения нецелесообразно – Rediska

0

Почему бы вам не отключить edittext. Затем он не будет отображать клавиатуру по щелчку. К этому вы можете:

android:editable="false" //from xml 
et.setEnabled(false); //from activity 

И затем на вашей кнопкеНажмите, чтобы включить его, установив над кодом true. И заставьте свою клавиатуру появиться.

Кроме того, если вы не получите фокус на EditText вы можете:

et.requestFocus(); // from activity 

<EditText 
    android:id="@+id/et1" 
    android:editable="false" 
    android:layout_width="150dp" 
    android:layout_height="wrap_content" > 
    <requestFocus/> 
</EditText> 

// из XML

Надеется, что это помогает!