我有 2 个活动,A 和 B。当 A 启动时,它会检查条件,如果为真,它会调用 startActivityForResult()
来启动 B。B 只接受文本输入,因此软键盘在 B 时自动弹出是有意义的开始。当活动开始时,EditText 已经有了焦点并准备好输入。
问题是键盘永远不会出现,即使在清单中为 B 的 <activity>
标记下设置了 windowSoftInputMode="stateAlwaysVisible"
。我也尝试将值设置为 stateVisible
。由于它不会自动显示,我必须点击 EditText 以使其显示。
任何人都知道解决方案可能是什么?
最适合我的是在 Android Manifest 中添加活动 B
android:windowSoftInputMode="stateVisible"
希望对你也有帮助。
最简单的解决方案:放
android:windowSoftInputMode = "stateVisible"
在 AndroidManifest.xml 的 Activity 部分
如果 EditText 上的 requestFocus 没有显示它,也许可以这样做:
InputMethodManager imm = (InputMethodManager)getSystemService(
Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(mEditText, 0);
查看 here 了解更多信息。
对我来说,只使用了这个解决方案:为该活动添加清单:
android:windowSoftInputMode="stateVisible|adjustPan"
我有两种方法。
方法 1. 在 OnCreate 方法中使用如下代码
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
除非您单击,否则它将防止弹出键盘。
或者
方法2 您可以通过在xml中使用“requestfocus”将焦点移到TextView等其他视图上。
<TextView
android:id="@+id/year_birth_day"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:text="1991">
<requestFocus />
</TextView>
方法3(我认为应该可以避免)在清单中使用以下代码-
android:windowSoftInputMode="stateVisible"
尝试延迟显示键盘。与此类似的东西:
public void onResume() {
super.onResume();
TimerTask tt = new TimerTask() {
@Override
public void run() {
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(yourTextBox, InputMethodManager.SHOW_IMPLICIT);
}
};
final Timer timer = new Timer();
timer.schedule(tt, 200);
}
需要高度重视!
android:windowSoftInputMode="stateVisible|adjustPan"
仅此一项无法在活动开始时显示键盘。
您还需要明确地将其添加到您的课程中
editTextXYZ.requestFocus()
val imm: InputMethodManager =
getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
imm.showSoftInput(editTextXYZ, InputMethodManager.SHOW_IMPLICIT)
如果您使用的是模拟器,则必须关闭硬键盘才能显示软键盘。
文件:AndroidManifest.xml
<activity android:name=".MainActivity">
添加以下属性:
android:windowSoftInputMode="stateVisible"
这对我有用。
在 setContentView 之后粘贴
this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
stateVisible
会导致键盘在设备方向更改时重新出现。如果不需要此行为,则stateVisible
不是解决方案。