Android EditText не приносит резервную копию клавиатуры, если клавиатура была закрыта
У меня есть активность в моем приложении, которая требует использования, чтобы ввести свой адрес электронной почты и пароль в соответствующие поля. Когда начинается действие, первое поле фокусируется, и клавиатура выскакивает, и это нормально, это в основном то, что должно произойти.
Но у меня есть две проблемы с этим:
Если пользователь закрывает клавиатуру и затем нажимает на одно из полей EditText, ничего не происходит, клавиатура снова не появляется.
Если пользователь щелкает в любом месте за пределами одного из полей 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: спрятать клавиатуру
И, пожалуйста, тщательно ищите, прежде чем создавать новую тему.