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" />
我正在尝试制作如下图所示的内容,当 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" />