カスタムダイアログに余白を設定するには?
質問
カスタムダイアログにマージンを設定する方法をご存知の方はいらっしゃいますか?カスタムダイアログがあるのですが、レイアウトパラメータで明示的にWRAP_CONTENTを設定したにもかかわらず、表示されると親画面いっぱいに広がってしまうので質問させていただきました。
基本的に、ダイアログはリストビューを含み、その要素は下にスクロールされなければなりませんが、要素が例えば1であるとき、それは伸びませんが、より多くのアイテムが追加されたとき、ダイアログは画面全体を占めます。
何か提案はありますか? 私は、満足のいく結果を得ることなく、可能なソリューションのすべての可能な組み合わせを試してきました。
EDIT: ダイアログのレイアウトを追加しました。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_margin="50dip"
android:orientation="vertical"
android:layout_gravity="top|center">
<FrameLayout android:layout_width="fill_parent" android:layout_margin="5dip" android:layout_height="wrap_content">
<TextView android:layout_width="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center"
android:textSize="20sp" android:textColor="@color/black"/>
<Button android:layout_height="32dip" android:layout_width="32dip"
android:id="@+id/guide_dialog_cross_button"
android:background="@drawable/button_cross_white"/>
</FrameLayout>
<ListView android:layout_width="fill_parent" android:layout_height="wrap_content"
android:fadingEdge="none"
android:layout_margin="5dip"/>
<ImageButton android:layout_width="wrap_content" android:layout_height="wrap_content"
android:layout_margin="5dip" />
</LinearLayout>
どのように解決するのですか?
マージンはダイアログでは機能しません。トップレベルのウィンドウビューはマージンをサポートするレイアウトタイプではないと想像しています。マージンは、(トップレベルのビュー要素ではなく)ダイアログのスタイルとして定義されたときに機能するという投稿を見たことがありますが、これも機能しないようです。
この問題を回避するために必要なのは
inset
drawable をダイアログの背景に使用し、背景の余分な挿入を考慮したパディングを調整することです。以下の例では、左と右の余白を設定します。
ダイアログの背景の drawable です。
<?xml version="1.0" encoding="utf-8"?>
<!-- drawable is a reference to your 'real' dialog background -->
<!-- insetRight and insetLeft add the margins -->
<inset
xmlns:android="http://schemas.android.com/apk/res/android"
android:drawable="@drawable/dialog_background"
android:insetRight="10dp"
android:insetLeft="10dp">
</inset>
ダイアログのメインビューです。
<?xml version="1.0" encoding="utf-8"?>
<!-- paddingTop / paddingBottom padding for the dialog -->
<!-- paddingLeft / paddingRight padding must add the additional inset space to be consistent -->
<!-- background references the inset background drawable -->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:paddingTop="5dp"
android:paddingBottom="5dp"
android:paddingLeft="15dp"
android:paddingRight="15dp"
android:background="@drawable/dialog_background_inset">
<!-- ...the rest of the layout... -->
また、ダイアログ自体の背景色を透明に設定する必要があるかもしれません。このようにカラーリソースを追加します。
<color name="transparent">#00000000</color>
そして、ダイアログのウィンドウの背景色を次のように設定します(注意:色を直接指定するとeclipseから文句を言われます)。
<style name="Dialog" parent="android:style/Theme.Dialog">
<item name="android:windowBackground">@color/transparent</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowIsFloating">true</item>
</style>
このスタイルは、ダイアログのコンストラクタで
theme
引数として渡さなければなりません。
new Dialog(context, R.style.Dialog);
関連
-
[解決済み] Androidのソフトキーボードをプログラムで閉じる/隠すにはどうすればよいですか?
-
[解決済み] Androidでアクティビティ起動時にEditTextにフォーカスが当たらないようにする方法
-
[解決済み] インスタンス状態の保存を使用してアクティビティ状態を保存するにはどうすればよいですか?
-
[解決済み] Ok "と "Cancel "オプションのあるダイアログを作成する方法
-
[解決済み] SDカードからファイルを削除する方法を教えてください。
-
[解決済み] プログラム的に電話をかけるには?
-
[解決済み] DialogFragmentを正しく終了させるには?
-
[解決済み] Androidのadb logcatでTAG名で特定のメッセージを除外する方法は?
-
[解決済み] TextView.setTextSizeの挙動がおかしい - テキストビューのテキストサイズを画面ごとに動的に設定する方法
-
[解決済み] WhatsAppでメッセージを送信する
最新
-
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: imageview の画像を画面に合わせて伸縮させる
-
[解決済み] ArrayAdapter<myClass> の使用方法
-
[解決済み] TabLayoutに対応したandroidデザインでタブテキストのフォントを変更する
-
[解決済み] Androidアプリケーションのヒープサイズを大きくするには?
-
[解決済み] Android StudioからADBを手動で再起動する方法
-
[解決済み] Android端末がHDPI画面かMDPI画面かを確認する方法は?
-
[解決済み] EditTextの右側のDrawableにonClickListenerを設定する [重複] [重複
-
[解決済み] FABアイコンの色を設定する