如何在Android中让EditText随软键盘一起移动

4

我正在尝试制作类似下面图片的东西,其中键盘在活动开始时自动打开,并且EditText和发送按钮会贴着键盘移动。

enter image description here

4个回答

3
使用以下代码,可以在活动启动时自动弹出软键盘。
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>

谢谢你的回答!但是如何让这样的一个条形菜单固定在软键盘上呢? - Stranger B.
这不是什么大问题。只需创建一个EditText并将其属性设置为alignparentBotton=true(如果您的父布局是RelativeLayout)...然后它应该可以工作了。 - kgandroid

0

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

可以通过在AndroidManifest.xml中使用adjustResize属性来实现。

adjustResize属性的主要目的是始终调整活动的主窗口大小,以便为屏幕上的软键盘腾出空间。

要在Activity开始时显示键盘并将EditText向上移动,需要像这样使用:

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

0
我认为这对你有用: 在清单文件中添加以下语句到你的Activity: android:windowSoftInputMode="stateHidden"
  <activity
        android:name="ConversationActivity"
        android:label="@string/title_activity_conversations"
        android:launchMode="singleTask"
        android:screenOrientation="portrait"
        android:windowSoftInputMode="stateHidden" />

0
要在Activity启动时显示键盘,您需要像这样使用:
 <activity android:name="com.your.package.ActivityName"
          android:windowSoftInputMode="stateVisible"  />

来自Android文档:

stateVisible

软键盘在通常适当的情况下可见(当用户向前导航到活动的主窗口时)。

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

在您的AndroidManifest.xml文件中:

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

来自Android文档:

stateHidden

当用户积极导航到活动时,软键盘会隐藏——也就是说,当用户选择进入该活动,而不是因为离开另一个活动而返回它时。

此设置将在用户进入新活动时隐藏软键盘(即使EditText控件获得焦点)。只有当用户点击编辑框控件时,软键盘才会显示。


我猜他是在要求在活动打开时启动键盘...而不是隐藏它。 - kgandroid
如果您在XML或Java代码中没有指定任何内容,则它将自动在活动开始时显示键盘。 - Rajesh Jadav
如果有多个编辑框,是可以将焦点放在其他编辑框上的。 - Rajesh Jadav

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接