Uniemożliwia wyświetlanie klawiatury po rozpoczęciu aktywności

Mam aktywność z wejściem Edit Text. Po zainicjowaniu aktywności wyświetlana jest klawiatura Androida. W jaki sposób klawiatura może pozostać ukryta, dopóki użytkownik nie skupi się na wejściu?

Author: Trevor.Screws, 2012-03-16

15 answers

Myślę, że następujące mogą działać

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
Używałem go już wcześniej do takich rzeczy.
 343
Author: Lucas,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-03-16 06:15:53

Spróbuj również -

this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);

W Przeciwnym Razie zadeklaruj w pliku manifestu aktywność-

<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".Main"
          android:label="@string/app_name"
          android:windowSoftInputMode="stateHidden"
          >

Jeśli używałeś już android:windowSoftInputMode dla wartości takiej jak adjustResize lub adjustPan, możesz połączyć dwie wartości takie jak:

<activity
        ...
        android:windowSoftInputMode="stateHidden|adjustPan"
        ...
        >

Spowoduje to ukrycie klawiatury w razie potrzeby, ale przesuń widok aktywności na wypadek, gdyby klawiatura miała być pokazana.

 151
Author: Praveenkumar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-11-03 11:21:23

Ukryj Go dla wszystkich działań wykorzystujących motyw

<style name="MyTheme" parent="Theme">
    <item name="android:windowSoftInputMode">stateHidden</item>
</style>

Ustaw temat

<application android:theme="@style/MyTheme">
 31
Author: Dipesh Rathod,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-04-04 12:00:14

Dodaj te dwie właściwości do układu nadrzędnego (np. układ liniowy, układ względny)

android:focusable="false"
android:focusableInTouchMode="false" 

Da radę:)

 21
Author: King of Masses,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-08-26 10:48:32

Spróbuj zadeklarować to w pliku menifest

<activity android:name=".HomeActivity"
      android:label="@string/app_name"
      android:windowSoftInputMode="stateAlwaysHidden"
      >
 12
Author: androidify,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-04-04 12:06:07

Jeśli używasz API na poziomie 21, możesz użyć editText.setShowSoftInputOnFocus (false);

 9
Author: SaraVF,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-03-20 12:10:06

Wystarczy dodać AndroidManifest.xml

<activity android:name=".HomeActivity"  android:windowSoftInputMode="stateHidden">
</activity>
 9
Author: Dayanand Waghmare,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-01-06 14:48:25

Najlepsze rozwiązanie dla mnie, wklej swoją klasę

@Override
public void onResume() {
    this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
    super.onResume();
}

@Override
public void onStart() {
    this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
    super.onStart();
}
 5
Author: Efe ÖZYER,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-08-05 07:59:06

Możesz również zapisać te linie kodu w układzie nadrzędnym .plik układu xml, w którym masz " problem": Oto kod:

android:focusable="true"
android:focusableInTouchMode="true"

Na przykład:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    ...
    android:focusable="true"
    android:focusableInTouchMode="true" >

    <EditText
        android:id="@+id/myEditText"
        ...
        android:hint="@string/write_here" />

    <Button
        android:id="@+id/button_ok"
        ...
        android:text="@string/ok" />
</LinearLayout>

Kluczem jest upewnienie się, że EditText nie jest bezpośrednio skupiony.
Pa! ;-)

 5
Author: Jack T,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-17 14:33:39

Funkcja ukrywania klawiatury.

public static void hideKeyboard(Activity activity) {
    View view = activity.getCurrentFocus();

    if (view != null) {
        InputMethodManager inputManager = (InputMethodManager) activity.getSystemService(Context.INPUT_METHOD_SERVICE);

        inputManager.hideSoftInputFromWindow(view.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
    }
}

Ukryj klawiaturę w AndroidManifext.plik xml.

<activity
    android:name=".MainActivity"
    android:label="@string/app_name"
    android:theme="@style/AppTheme"
    android:windowSoftInputMode="stateHidden">
 3
Author: Philip Belgrave-Herbert,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-12-22 04:32:33

Po prostu dodaj to do manifestu.plik xml

<activity android:name=".MainActivity"
            android:windowSoftInputMode="stateHidden">
Jesteś skończony.
 2
Author: Androido,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-08-09 10:27:35

Do rozwinięcia po zaakceptowanej odpowiedzi przez @ Lucas:

Nazwij to swoją aktywnością w jednym z wczesnych wydarzeń cyklu życia:

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

Przykład Kotlina:

override fun onResume() {
  super.onResume()

  window.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN)
}
 1
Author: Trevor.Screws,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-06-29 15:07:03
//to hide the soft keyboard
InputMethodManager imm = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(v.getWindowToken(), 0);
 0
Author: Yuliia Ashomok,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-09-30 18:22:46

Po prostu dodaj to do swojej aktywności:

@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
      if (getCurrentFocus() != null) {
           InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
           imm.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), 0);
      }
      return super.dispatchTouchEvent(ev);
}
 0
Author: haythem souissi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-20 15:39:38

Dzieje się tak, gdy edytowany tekst jest pierwszym widokiem, w którym można uzyskać ostrość, gdy zaczyna się aktywność. Możesz więc niezawodnie rozwiązać ten problem bez kodu, po prostu ustawiając początkową ostrość na inny widok. Możesz to zrobić w XML, nie wymaga kodu.

Przykład:

<Button
  android:id="@+id/mybutton">
  <requestFocus />
</Button>
 -2
Author: Mtl Dev,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-03-18 00:55:05