我要在进入“电子邮件登录”屏幕时弹出设备键盘。
我在 AndroidManifest.xml 文件中声明了windowSoftInputMode
至"stateVisible"
:
<activity
android:name=".activities.EmailLoginActivity"
android:launchMode="singleTask"
android:screenOrientation="portrait"
android:windowSoftInputMode="stateVisible" />
我遵循了这个documentation。
结果:
在运行Android API最高为27的设备上,将显示键盘。
在运行Android API 28的设备上,未显示键盘。
这是Android Pie中的错误吗?
有什么建议吗?
答案 0 :(得分:18)
似乎在Android Pie(API 28)中,它不会自动在EditText
中设置请求焦点。
因此,您必须以编程方式或在XML文件中设置requestFocus
中的EditText
。
your_layout.xml
<EditText
android:id="@+id/et_email"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/_20sdp"
android:inputType="textEmailAddress"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<requestFocus />
</EditText>
OR
your_activity.java
findViewById(R.id.et_email).requestFocus();
答案 1 :(得分:1)
如果您使用宽度和高度为0dp的隐藏EditText,则它不适用于API 28 pie,我可以通过将尺寸设置为1dp并将窗口小部件的所有部分设置为透明来使其工作。 这对我有用:
<EditText
android:id="@+id/hacked_edit_text"
android:layout_width="1dp"
android:layout_height="1dp"
android:background="@android:color/transparent"
android:cursorVisible="false"
android:textColor="@android:color/transparent" />
答案 2 :(得分:0)
我对于Android Pie也确实有问题。 .requestFocus()
对我不起作用。
我的问题的解决方案:
确保您的EditText
实际上可见。我将EditText
用作隐藏字段,并且仅在将宽度和高度从0
设置为1dp
时才显示键盘。
答案 3 :(得分:0)
答案 4 :(得分:0)
在official documentation中有很好的记录:
fun showSoftKeyboard(view: View) {
if (view.requestFocus()) {
val imm = getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
imm.showSoftInput(view, InputMethodManager.SHOW_IMPLICIT)
}
}
答案 5 :(得分:-3)
<activity
android:name=".activities.EmailLoginActivity"
android:launchMode="singleTask"
android:screenOrientation="portrait"
android:windowSoftInputMode="stateVisible|adjustResize" />
希望这对您有帮助