[解決済み】Android:タイトルのないダイアログを作成する方法は?
質問
Androidでカスタムダイアログを生成しようとしています。 このようなダイアログを作成します。
dialog = new Dialog(this);
dialog.setContentView(R.layout.my_dialog);
ダイアログのタイトルを除いてはすべてうまくいきます。 ダイアログのタイトルを設定しなくても、ダイアログのポップアップにはダイアログの位置に空白のスペースがあります。
ダイアログのこの部分を隠す方法はないでしょうか?
AlertDialogで試したのですが、レイアウトがうまく設定されていないようです。
LayoutInflater inflater =
(LayoutInflater) this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View view = inflater.inflate(R.layout.map_dialog, null);
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setView(view);
// dialog = new Dialog(this);
// dialog.setContentView(R.layout.map_dialog);
dialog = builder.create();
((TextView) dialog.findViewById(R.id.nr)).setText(number);
このコードを使用すると、最後の行でnull Pointer Exceptionが発生します。 ダイアログはnullではないので、取得しようとしたTextViewは存在しません。
ダイアログのコンストラクタを使用する部分のコメントを解除すると、すべてがうまくいきますが、ダイアログレイアウトの上のタイトルがうまくいきません。
どうすればいいですか?
ダイアログのタイトルを隠すことができます。
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
この回答の以前のバージョン、複雑になりすぎている。
を使用する必要があります。
AlertDialog
. については、Android Developer's サイトに良い解説があります。
カスタムダイアログ
.
簡単にまとめると、公式サイトからコピーした以下のようなコードでこれを行うのです。これは、カスタムレイアウトファイルを受け取り、それを膨らませ、基本的なテキストとアイコンを与えて、それを作成します。そして、それを次のように表示します。
alertDialog.show()
.
AlertDialog.Builder builder;
AlertDialog alertDialog;
Context mContext = getApplicationContext();
LayoutInflater inflater = (LayoutInflater)
mContext.getSystemService(LAYOUT_INFLATER_SERVICE);
View layout = inflater.inflate(R.layout.custom_dialog,
(ViewGroup) findViewById(R.id.layout_root));
TextView text = (TextView) layout.findViewById(R.id.text);
text.setText("Hello, this is a custom dialog!");
ImageView image = (ImageView) layout.findViewById(R.id.image);
image.setImageResource(R.drawable.android);
builder = new AlertDialog.Builder(mContext);
builder.setView(layout);
alertDialog = builder.create();
コメントを受けて
というIDのTextViewを想定しています。
nr
で膨らませているViewの中に
View view = inflater....
. もしそうなら、ほんの少し変更する必要があります。
dialog.findView...
それを
view.findView...
. そうしたら、dialog.show()を使うか、あるいはわざわざbuilder.create()をしなくてもbuilder.show()を使うのを忘れないようにしましょう。
関連
-
[解決済み] [Solved] Error "File google-services.json is missing from module root folder. これがないとGoogle Services Pluginは機能しません" [重複]。
-
[解決済み] AndroidのADBデバイスが不正に
-
[解決済み] Androidのgravityとlayout_gravityの違いは何ですか?
-
[解決済み] setBackgroundDrawable() 非推奨
-
[解決済み] Androidのソフトキーボードをプログラムで閉じる/隠すにはどうすればよいですか?
-
[解決済み] Androidでアクティビティ起動時にEditTextにフォーカスが当たらないようにする方法
-
[解決済み] Androidの「コンテキスト」とは何ですか?
-
[解決済み] AndroidのListViewで画像を遅延ロードする方法
-
[解決済み] Ok "と "Cancel "オプションのあるダイアログを作成する方法
-
[解決済み】Android UserManager.isUserAGoat()の正しい使用例?)
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Android Intent コンストラクタを解決できない
-
[解決済み] [Solved] Unsupported method: ベースコンフィグ.getApplicationIdSuffix()
-
[解決済み】このアクティビティは、すでにウィンドウ装飾によって提供されるアクションバーを持っています。
-
[解決済み】"ビットマップが大きすぎてテクスチャにアップロードできない"
-
[解決済み】android.content.ActivityNotFoundException: 明示的なアクティビティクラスを見つけることができません。
-
[解決済み】'dependencies' を '(groovy.lang.Closure)' に適用できない。)
-
[解決済み】アクティビティにない場所でのgetLayoutInflater()の呼び出し
-
[解決済み] ADBエラー:デーモンに接続できない
-
[解決済み] Android Fragment onAttach() 非推奨
-
[解決済み] タイトルのないDialogFragmentを作成するには?