編集テキストのAndroidカスタムダイアログは、キーボードの解決策をポップアップすることはできません
2022-02-24 11:44:50
私の最近の自主開発プロジェクトである「みんなの医学部」は、すでに社内テスト中で、まもなくすべての主要なアプリマーケットで利用できるようになります。以前開発したいくつかのプロジェクトが、何らかの理由で市場に出ていないのは残念なことです。というわけで、最近はとても機嫌がいいのです。
今日は新しいプロジェクトで、弁護士とクライアントのためのアプリを作っているのですが、カスタムダイアログボックスの要件があります。知識は本当にシンプルで、次のような効果です。
しかし、のんびり書き終えてみると、カスタムダイアログボックス内のネストしたEditTextが全くフォーカスを得られず、ソフトキーボードをポップアップできないことに気づき、落ち込んでいます。以下の画像は、以前書いたカスタムダイアログです。
以下は、その解決方法です。
1. ダイアログボックスのレイアウトファイルです。
2. カスタムダイアログのコード
// Pop up a custom dialog
LayoutInflater inflater = LayoutInflater.from(OnlineActivity.this);
View view = inflater.inflate(R.layout.hl_law_dialog, null);
// Dialog box
final Dialog dialog = new Dialog(OnlineActivity.this);
dialog.getWindow().setBackgroundDrawable(new ColorDrawable(0));
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.show();
// Set the width to the width of the screen
WindowManager windowManager = getWindowManager();
Display display = windowManager.getDefaultDisplay();
WindowManager.LayoutParams lp = dialog.getWindow().getAttributes();
lp.width = (int) (display.getWidth()); // set the width
dialog.getWindow().setAttributes(lp);
dialog.getWindow().setContentView(view);
final EditText et_obj = (EditText) view.findViewById(R.id.et_obj);// marker
final EditText et_name = (EditText) view.findViewById(R.id.et_name);// name
final EditText et_phone = (EditText) view.findViewById(R.id.et_phone);// phone
TextView tv_go = (TextView) view.findViewById(R.id.tv_go);// confirm delegate
final ImageView iv_close = (ImageView) view.findViewById(R.id.iv_close);// Confirm delegate
これが正しい書き方なのですが、どこで間違ったのでしょうか?
以前、私が書いた方法は
// Dialogs
final Dialog dialog = new AlertDialog.Builder(OnlineActivity.this).create();
dialog.getWindow().setBackgroundDrawable(new ColorDrawable(0));
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.show();
そこで、AlertDialogをDialogに置き換えるだけでこの問題は解決します。
想像してみてください。
1. このコードがない場合、どのような効果があるのでしょうか?
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
<イグ
写真のように、醜いタイトルバーが表示されます。
2. このコードを追加しない場合、どのような効果があるのでしょうか?
WindowManager windowManager = getWindowManager();
Display display = windowManager.getDefaultDisplay();
WindowManager.LayoutParams lp = dialog.getWindow().getAttributes();
lp.width = (int) (display.getWidth()); // set the width
dialog.getWindow().setAttributes(lp);
<イグ
ご覧のように、このように狭いダイアログになります。
関連
-
adb connect device offline エラー解決
-
Android Studio + Gradle またはコマンドラインを使用した Android apk の署名とパッケージング
-
Android のリストビューでアダプタを使用しているときに null オブジェクトの参照に対して仮想メソッド xxxxxxxx を呼び出そうとする問題が解決されました。
-
コンフィギュレーション 'compile' は廃止され、'implementati solution' に置き換わりました。
-
RuntimeException: Unable to start activity ComponentInfo{xxx}: java.lang.NullPoi Androidの開発において、アクティビティを開始できません。
-
Android 開発の問題 - いくつかのプロジェクトはすでにワークスペースに存在するため、インポートできません。
-
アンドロイドのdrawableフォルダ配下の各種xmlスタイルファイルの使用方法について詳しく解説しています
-
Android LayoutInflaterの原則の分析は、ビュー(a)のステップの深い理解によってあなたのステップを取る
-
アンドロイドバージョン一覧
-
Android Bluetooth接続
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
GPSプロンプトの問題は、Callがユーザーによって拒否される可能性のある許可を必要とすることです:コードは、明示的にsをチェックする必要があります。
-
Android フロントカメラのビデオ録画に失敗しました (MediaRecorder: start failed: -19)
-
JSONException: java.lang.String は JSONObject ソリューションに変換できません。
-
Android リソースのリンクに失敗する、解決方法
-
ArrayAdapter のソリューションでは、リソース ID が TextView である必要があります。
-
Android eclipseが起動できない:選択項目を起動できず、最近起動した項目もない
-
Android 開発の問題点:ActivityNotFoundException: 明示的なアクティビティクラスを見つけることができません
-
Androidリストウィジェット開発詳細
-
Androidにおける縦の点線
-
Android 問題その9:AVD フォルダにコピーする ABI armeabi 用の 'userdata.img' ファイルが見つからない。