メールログイン画面に入ると、デバイスのキーボードをポップアップしたいのですが。
AndroidManifest.xmlファイルでwindowSoftInputMode
を"stateVisible"
に宣言しました:
<activity
Android:name=".activities.EmailLoginActivity"
Android:launchMode="singleTask"
Android:screenOrientation="portrait"
Android:windowSoftInputMode="stateVisible" />
私はこれに従いました ドキュメント 。
結果:
Android APIを実行するデバイスでは、キーボードが表示されます。
Android API 28を実行するデバイスでは、キーボードは表示されません。
Android Pieのバグですか?
なにか提案を?
Android Pie(API 28)のようですが、EditText
にリクエストフォーカスを自動的に設定していません。
つまり、requestFocus
のEditText
をプログラムまたはXMLファイルで設定する必要があります。
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>
[〜#〜]または[〜#〜]
your_activity.Java
findViewById(R.id.et_email).requestFocus();
幅と高さが0dpの非表示のEditTextを使用すると、API 28パイでは機能しません。寸法を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" />
Android Pieについても同様に問題がありました。.requestFocus()
が機能しませんでした。
私の問題の解決策:
EditText
が実際に表示されていることを確認してください。私はEditText
を非表示フィールドとして使用し、幅と高さを0
から1dp
に設定した後にのみキーボードが表示されました。
公式ドキュメント でうまく文書化されています:
fun showSoftKeyboard(view: View) {
if (view.requestFocus()) {
val imm = getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
imm.showSoftInput(view, InputMethodManager.SHOW_IMPLICIT)
}
}