Как отключить всплывающее окно клавиатуры, когда на edittext?

В моем приложении первый вид всех моих экранов – это EditText, поэтому каждый раз, когда я выхожу на экран, появляется экранная клавиатура. Как я могу отключить эту всплывающую подсказку и включить ее при ручном нажатии на EditText ????

eT = (EditText) findViewById(R.id.searchAutoCompleteTextView_feed); eT.setOnFocusChangeListener(new OnFocusChangeListener() { public void onFocusChange(View v, boolean hasFocus) { if(hasFocus){ InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(eT.getWindowToken(), 0); } } }); 

Код xml:

 <ImageView android:id="@+id/feedPageLogo" android:layout_width="45dp" android:layout_height="45dp" android:src="@drawable/wic_logo_small" /> <Button android:id="@+id/goButton_feed" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:text="@string/go" /> <EditText android:id="@+id/searchAutoCompleteTextView_feed" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_toLeftOf="@id/goButton_feed" android:layout_toRightOf="@id/feedPageLogo" android:hint="@string/search" /> <TextView android:id="@+id/feedLabel" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_below="@id/feedPageLogo" android:gravity="center_vertical|center_horizontal" android:text="@string/feed" android:textColor="@color/white" /> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/ButtonsLayout_feed" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" > <Button android:id="@+id/feedButton_feed" android:layout_width="wrap_content" android:layout_height="30dp" android:layout_margin="0dp" android:layout_weight="1" android:background="@color/white" android:text="@string/feed" android:textColor="@color/black" /> <Button android:id="@+id/iWantButton_feed" android:layout_width="wrap_content" android:layout_height="30dp" android:layout_margin="0dp" android:layout_weight="1" android:background="@color/white" android:text="@string/iwant" android:textColor="@color/black" /> <Button android:id="@+id/shareButton_feed" android:layout_width="wrap_content" android:layout_height="30dp" android:layout_margin="0dp" android:layout_weight="1" android:background="@color/white" android:text="@string/share" android:textColor="@color/black" /> <Button android:id="@+id/profileButton_feed" android:layout_width="wrap_content" android:layout_height="30dp" android:layout_margin="0dp" android:layout_weight="1" android:background="@color/white" android:text="@string/profile" android:textColor="@color/black" /> </LinearLayout> <ListView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/feedListView" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_above="@id/ButtonsLayout_feed" android:layout_below="@id/feedLabel" android:textSize="15dp" > </ListView> 

Третий вид (EditText) – это центр фокуса.

Solutions Collecting From Web of "Как отключить всплывающее окно клавиатуры, когда на edittext?"

Лучшее решение содержится в файле проекта Manifest (AndroidManifest.xml) , добавьте в конструкцию действия следующий атрибут

андроид: windowSoftInputMode = "stateHidden"


Пример:

  <activity android:name=".MainActivity" android:windowSoftInputMode="stateHidden" /> 

Описание:

  • Состояние мягкой клавиатуры – будь то скрыто или видимо – когда деятельность становится центром внимания пользователя.
  • Корректировка, сделанная в главном окне операции – уменьшена ли она меньше, чтобы освободить место для мягкой клавиатуры или ее панорамирование содержимого, чтобы сделать текущий фокус видимым, когда часть окна покрыта мягкой клавиатурой.

Представлено в:

  • Уровень API 3.

Ссылка на Документы

Примечание. Значения, установленные здесь (кроме значений «stateUnspecified» и «adjustUnspecified»), устанавливаются в теме.

Вы должны создать представление над EditText, которое принимает фокусный фокус:

Что-то вроде :

 <!-- Stop auto focussing the EditText --> <LinearLayout android:layout_width="0dp" android:layout_height="0dp" android:background="@android:color/transparent" android:focusable="true" android:focusableInTouchMode="true"> </LinearLayout> <EditText android:id="@+id/searchAutoCompleteTextView_feed" android:layout_width="200dp" android:layout_height="wrap_content" android:inputType="text" /> 

В этом случае я использовал LinearLayout для запроса фокуса. Надеюсь это поможет.

Это отлично работало … благодаря Zaggo0

Добавьте ниже код в свой класс активности.

 getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN); 

Клавиатура будет всплывать, когда пользователь нажимает на EditText

  edittext.setShowSoftInputOnFocus(false); 

Теперь вы можете использовать любую пользовательскую клавиатуру, которая вам нравится.

Вы можете использовать следующий код для отключения OnScreen Keyboard.

 InputMethodManager im = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); im.hideSoftInputFromWindow(editText.getWindowToken(), 0); 

Люди предложили много отличных решений здесь, но я использовал эту простую технику с моим EditText (ничего в java и AnroidManifest.xml не требуется). Просто настройте фокусный и focusableInTouchMode на false непосредственно на EditText.

  <EditText android:id="@+id/text_pin" android:layout_width="136dp" android:layout_height="wrap_content" android:layout_margin="5dp" android:textAlignment="center" android:inputType="numberPassword" android:password="true" android:textSize="24dp" android:focusable="false" android:focusableInTouchMode="false"/> 

Мое намерение здесь состоит в том, чтобы использовать это окно редактирования в активности блокировки приложения, где я прошу пользователя ввести PIN-код, и я хочу показать свою настраиваемую ПИН-панель. Протестировано с minSdk = 8 и maxSdk = 23 на Android Studio 2.1

Введите описание изображения здесь

Объявить глобальную переменную для InputMethodManager:

  private InputMethodManager im ; 

В onCreate () определите его:

  im = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); im.hideSoftInputFromWindow(youredittext.getWindowToken(), 0); 

Установите onClickListener для редактирования текста внутри oncreate ():

  youredittext.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { im.showSoftInput(youredittext, InputMethodManager.SHOW_IMPLICIT); } }); 

Это сработает.

Используйте следующий код, напишите его в onCreate()

 InputMethodManager inputManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); inputManager.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS); getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN); 

Два простых решения:

Первое решение добавляется ниже строки кода в манифестном XML-файле. В файле манифеста (AndroidManifest.xml) добавьте в конструкцию действия следующий атрибут

андроид: windowSoftInputMode = "stateHidden"

Пример:

 <activity android:name=".MainActivity" android:windowSoftInputMode="stateHidden" /> 

Второе решение добавляет ниже строки кода в действие

 //Block auto opening keyboard this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN); 

Мы можем использовать любое одно из решений выше. благодаря

Попробуйте ……. я решаю эту проблему, используя код: –

 EditText inputArea; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); inputArea = (EditText) findViewById(R.id.inputArea); //This line is you answer.Its unable your click ability in this Edit Text //just write inputArea.setInputType(0); } 

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

попробуй

Попробуйте С этим:

 EditText yourEditText= (EditText) findViewById(R.id.yourEditText); InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); imm.showSoftInput(yourEditText, InputMethodManager.SHOW_IMPLICIT); 

Чтобы закрыть, вы можете использовать:

 InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(yourEditText.getWindowToken(), 0); 

Попробуйте это в вашем коде:

 ed = (EditText)findViewById(R.id.editText1); InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(ed.getWindowToken(), 0); ed.setOnClickListener(new OnClickListener() { public void onClick(View v) { InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); imm.showSoftInput(ed, InputMethodManager.SHOW_IMPLICIT); } }); 

Используйте следующий код в onCreate()

  editText = (EditText) findViewById(R.id.editText); editText.requestFocus(); editText.postDelayed(new Runnable() { public void run() { InputMethodManager keyboard = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); keyboard.hideSoftInputFromWindow( editText.getWindowToken(), 0); } }, 200); 

Единственное, что вам нужно сделать, это добавить android:focusableInTouchMode="false" в EditText в xml и все. (Если кому-то еще нужно знать, как это сделать с помощью простого способа)

В приложении для Android, которое я создавал, у меня было три EditText s в LinearLayout расположенных горизонтально. Я должен был предотвратить появление мягкой клавиатуры при загрузке фрагмента. В дополнение к настройке focusable и focusableInTouchMode на true на LinearLayout , мне пришлось установить descendantFocusability для blocksDescendants . В onCreate я вызвал requestFocus на LinearLayout . Это предотвратило появление клавиатуры при создании фрагмента.

Макет –

  <LinearLayout android:id="@+id/text_selector_container" android:layout_width="match_parent" android:layout_height="wrap_content" android:weightSum="3" android:orientation="horizontal" android:focusable="true" android:focusableInTouchMode="true" android:descendantFocusability="blocksDescendants" android:background="@color/black"> <!-- EditText widgets --> </LinearLayout> 

В onCreatemTextSelectorContainer.requestFocus();

Используйте это, чтобы включить и отключить EditText ….

 InputMethodManager imm; imm = (InputMethodManager) getApplicationContext().getSystemService(Context.INPUT_METHOD_SERVICE); if (isETEnable == true) { imm.toggleSoftInput(InputMethodManager.SHOW_IMPLICIT, 0); ivWalllet.setImageResource(R.drawable.checkbox_yes); etWalletAmount.setEnabled(true); etWalletAmount.requestFocus(); isETEnable = false; } else { imm.toggleSoftInput(InputMethodManager.HIDE_IMPLICIT_ONLY,0); ivWalllet.setImageResource(R.drawable.checkbox_unchecked); etWalletAmount.setEnabled(false); isETEnable = true; } 

Для пользователей Xamarin:

 [Activity(MainLauncher = true, ScreenOrientation = ScreenOrientation.Portrait, WindowSoftInputMode = SoftInput.StateHidden)] //SoftInput.StateHidden - disables keyboard autopop 

Попробуйте этот ответ,

 editText.setRawInputType(InputType.TYPE_CLASS_TEXT); editText.setTextIsSelectable(true); 

Примечание: только для API 11+

 private InputMethodManager imm; ... editText.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { v.onTouchEvent(event); hideDefaultKeyboard(v); return true; } }); private void hideDefaultKeyboard(View et) { getMethodManager().hideSoftInputFromWindow(et.getWindowToken(), 0); } private InputMethodManager getMethodManager() { if (this.imm == null) { this.imm = (InputMethodManager) getContext().getSystemService(android.content.Context.INPUT_METHOD_SERVICE); } return this.imm; } 

Ну, у меня была такая же проблема, и я просто занимался сфокусированным в файле XML.

 <EditText android:cursorVisible="false" android:id="@+id/edit" android:focusable="false" android:layout_width="match_parent" android:layout_height="wrap_content" /> 

Вероятно, вы ищите безопасность. Это также поможет в этом.

Для любого текстового вида в вашей деятельности (или создайте фальшивый пустой текст с помощью android: layout_width = "0dp" android: layout_height = "0dp") и добавьте для этого следующего текста: android: textIsSelectable = "true"

Если кто-то все еще ищет самое простое решение, установите для атрибута true свой родительский макет

 android:focusableInTouchMode="true" 

Пример:

 <android.support.constraint.ConstraintLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:focusableInTouchMode="true"> ....... ...... </android.support.constraint.ConstraintLayout>