Android 如何让 EditText 粘在软键盘上

How to have an EditText stuck to the soft keyboard in Android

我正在尝试制作如下图所示的内容,当 activity 启动时键盘会自动打开,并且 EditText 和发送按钮会固定在键盘上。

要在 Activity 开头显示键盘,您需要这样使用:

 <activity android:name="com.your.package.ActivityName"
          android:windowSoftInputMode="stateVisible"  />

来自 Android 文档:

stateVisible

The soft keyboard is visible when that's normally appropriate (when the user is navigating forward to the activity's main window).

要在 Activity 开头隐藏键盘,您需要这样使用:

在你的 AndroidManifest.xml:

<activity android:name="com.your.package.ActivityName"
          android:windowSoftInputMode="stateHidden"  />

来自 Android 文档:

stateHidden

The soft keyboard is hidden when the user chooses the activity — that is, when the user affirmatively navigates forward to the activity, rather than backs into it because of leaving another activity.

此设置将在用户输入新内容时隐藏软键盘Activity(即使 EditText 控件获得焦点)。仅当用户单击编辑框控件时才会显示软键盘。

使用下面的代码在 activity 启动时自动弹出软键盘

InputMethodManager imm = (InputMethodManager)getSystemService(
    Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(youredittext, 0);

确保您没有在 manifest.xml 中定义 android:windowSoftInputMode="stateHidden"

要使 Edittext 附加到页脚,请使用以下代码:

<RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:background="#f3f3f3"
        android:paddingBottom="10.0dip"
        android:paddingTop="10.0dip"
        android:id="@+id/bottom_bar" >

        <EditText
            android:id="@+id/et_send_bar"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_marginLeft="10.0dip"
            android:layout_toLeftOf="@+id/ib_send"
            android:hint="Enter Message"
            android:singleLine="true" />

        <ImageView
            android:id="@+id/ib_send"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignBottom="@+id/et_send_bar"
            android:layout_alignParentRight="true"
            android:layout_alignTop="@+id/et_send_bar"
            android:layout_marginBottom="1px"
            android:layout_marginRight="10.0dip"
            android:layout_marginTop="1px"
            android:background="@drawable/chatsend_bg"
            android:paddingBottom="5.0dip"
            android:paddingLeft="10dp"
            android:paddingRight="10dp"
            android:paddingTop="5.0dip"
            android:src="@drawable/ic_send_dark_normal" />
    </RelativeLayout>

我还找到了另一种在出现软键盘时向上移动布局组件的解决方案。

可以使用adjustResize属性在AndroidManifest.xml

中实现

adjustResize 属性的主要用途是 activity 的主要 window 始终调整大小以为屏幕上的软键盘腾出空间。

要在 Activity 开头显示键盘并向上移动 EditText,您需要这样使用:

<activity android:name="com.your.package.ActivityName"
          android:windowSoftInputMode="adjustResize" />

我认为它适合你: 将清单文件中的此语句添加到您的 Activity: android:windowSoftInputMode="stateHidden"

  <activity
        android:name="ConversationActivity"
        android:label="@string/title_activity_conversations"
        android:launchMode="singleTask"
        android:screenOrientation="portrait"
        android:windowSoftInputMode="stateHidden" />