如果键盘已关闭,Android EditText不会带来键盘备份

时间:2015-06-19 12:38:23

标签: android keyboard android-edittext android-manifest soft-input-panel

我的应用上有一项活动,需要用户在相关字段中输入他们的电子邮件和密码。当活动开始时,第一个字段被聚焦并且键盘弹出,这很好,这基本上应该发生。

但我有两个问题:

  1. 如果用户关闭键盘,然后点击其中一个EditText字段,则不会再出现任何键盘。

  2. 如果用户点击其中一个EditText字段以外的任何地方,键盘应该像在HTML移动网站上那样关闭。

  3. 我的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 个答案:

答案 0 :(得分:0)

Q2的解决方案:Hide keyboard

请在创建新帖子之前仔细搜索。