Android EditText не приносит резервную копию клавиатуры, если клавиатура была закрыта

У меня есть активность в моем приложении, которая требует использования, чтобы ввести свой адрес электронной почты и пароль в соответствующие поля. Когда начинается действие, первое поле фокусируется, и клавиатура выскакивает, и это нормально, это в основном то, что должно произойти.

Но у меня есть две проблемы с этим:

  1. Если пользователь закрывает клавиатуру и затем нажимает на одно из полей EditText, ничего не происходит, клавиатура снова не появляется.

  2. Если пользователь щелкает в любом месте за пределами одного из полей EditText, клавиатура не должна закрываться, как на веб-сайте HTML для мобильных устройств.

Мой XML-файл макета

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent" android:layout_height="fill_parent"
    android:background="@drawable/home_background">

    <ScrollView
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:id="@+id/scrollView"
        android:layout_gravity="left|top"
        android:focusableInTouchMode="true" >

        <LinearLayout
            android:orientation="vertical"
            android:layout_width="250dp"
            android:layout_height="wrap_content"
            android:layout_gravity="center">

            <EditText
                android:inputType="textEmailAddress"
                android:id="@+id/email"
                android:hint="@string/email"
                style="@style/basic_field"
                android:focusable="true"
                android:focusableInTouchMode="true"/>

            <EditText
                android:inputType="textPassword"
                android:id="@+id/password"
                android:hint="@string/password"
                style="@style/basic_field"
                android:focusable="true"
                android:focusableInTouchMode="true" />

            <Button
                style = "@style/basic_button"
                android:text="@string/login"
                android:id="@+id/login_button" />

            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textAppearance="?android:attr/textAppearanceMedium"
                android:text="@string/forgot_pass"
                android:id="@+id/forgot_password"
                android:background="@android:color/transparent"
                android:textColor="@color/red"/>

            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textAppearance="?android:attr/textAppearanceMedium"
                android:text="@string/forgot_email"
                android:id="@+id/forgot_email"
                android:background="@android:color/transparent"
                android:textColor="@color/red" />

            <Button
                style = "@style/basic_button"
                android:text="@string/register"
                android:id="@+id/reg_button" />
        </LinearLayout>
    </ScrollView>
</FrameLayout>

МОЙ файл манифеста

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="uk.org.r1d.ownitall" >

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:theme="@android:style/Theme.NoTitleBar" >
        /// MAIN LANDING PAGE
        <activity
            android:name=".login"
            android:label="@string/app_name"
            android:theme="@android:style/Theme.NoTitleBar"
            android:windowSoftInputMode="stateAlwaysHidden">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        /// SIGN UP MAIN PAGE
        <activity
            android:name=".signUpPage"
            android:label="@string/everyspotfind"
            android:theme="@android:style/Theme.NoTitleBar"
            android:windowSoftInputMode="stateVisible|adjustUnspecified">
            <intent-filter>
                <action android:name="android.view.InputMethod" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

Я попытался добавить, но это не имеет значения. А также ручное открытие клавиатуры:

editText.setOnFocusChangeListener(new OnFocusChangeListener() {
            @Override
            public void onFocusChange(View v, boolean hasFocus) {
                editText.post(new Runnable() {
                    @Override
                    public void run() {
                        InputMethodManager imm = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
                        imm.showSoftInput(editText, InputMethodManager.SHOW_IMPLICIT);
                    }
                });
            }
        });
        editText.requestFocus(); 

1 ответ

Решение для Q2: спрятать клавиатуру

И, пожалуйста, тщательно ищите, прежде чем создавать новую тему.

Другие вопросы по тегам