[解決済み] 背景が透明なBottomSheetDialog
2023-05-24 22:24:36
質問
画面幅より小さい幅のダイアログを表示させたい。
例えば、Nexus 9 の Google Play Music の共有オプションなど。
これを実現する方法をご存知ですか?
今のところ、シート内容の幅を小さくすることに成功しただけで、背景は画面幅のまま、白い背景が表示されています。
いくつかのコードです。
build.gradle
compile 'com.android.support:design:23.3.0'
MainActivity
@Override
protected void onCreate(Bundle savedInstanceState) {
...
mBottomSheetDialog = new BottomSheetDialog(this);
mBottomSheetDialog.setContentView(R.layout.sheet_test);
mBottomSheetDialog.setOnDismissListener(new DialogInterface.OnDismissListener() {
@Override
public void onDismiss(DialogInterface dialog) {
mBottomSheetDialog = null;
}
});
mBottomSheetDialog.show();
}
sheet_test
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="100dp"
android:layout_height="match_parent"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
style="@style/TextAppearance.AppCompat.Body1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="16dp"
android:text="Some Text"
android:textColor="@color/colorPrimary" />
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="#ddd" />
<TextView
style="@style/TextAppearance.AppCompat.Body1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="16dp"
android:text="Some Text" />
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="#ddd" />
</LinearLayout>
</android.support.v4.widget.NestedScrollView>
どのように解決するのですか?
ということで、2つの解決方法を考えました。
一番良い方法です。
ボトムシートのためだけに透明な背景を持つアクティビティを作成します。 コーディネーター レイアウトとボトムシートで独自のレイアウトを実装します。 好きな余白を設定する。 好きなコンテンツを設定する。
まだテストしていません。
怠惰なもの。
拡張
底面シートダイアログフラグメント(BottomSheetDialogFragment
の中にある
onActivityCreated
を追加してください。
Resources resources = getResources();
// Set margin for Landscape Mode. Maybe a more elegant solution will be to implements our own bottom sheet with our own margins.
if (resources.getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) {
assert getView() != null;
View parent = (View) getView().getParent();
CoordinatorLayout.LayoutParams layoutParams = (CoordinatorLayout.LayoutParams) parent.getLayoutParams();
layoutParams.setMargins(
resources.getDimensionPixelSize(R.dimen.bottom_sheet_margin_left), // 64dp
0,
resources.getDimensionPixelSize(R.dimen.bottom_sheet_margin_right), // 64dp
0
);
parent.setLayoutParams(layoutParams);
}
関連
-
[解決済み】このアクティビティでは、Theme.AppCompatテーマ(またはその子孫)を使用する必要があります。
-
[解決済み] Androidでイメージビューの背景を透明に設定する
-
[解決済み] Androidで背景を20%透明にする方法
-
[解決済み] 透明なImageButtonを持つ方法。アンドロイド
-
[解決済み】Androidで透明なActivityを作成する方法は?
-
[解決済み】Androidで背景を透明にしたダイアログを表示する方法
-
[解決済み] ArrayAdapter<myClass> の使用方法
-
[解決済み] XMLで矩形を描画できますか?
-
[解決済み] AndroidでTextViewの下にアンダーラインを引くには
-
[解決済み] 文字列リソースにHTML?
最新
-
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で透明なActivityを作成する方法は?
-
[解決済み] BottomSheetDialogFragmentの状態をexpandedに設定する。
-
[解決済み] Androidの連絡先リストを呼び出すには?
-
[解決済み] AppCompat-v7 21でアクションバー/ツールバーにアイコンを表示する。
-
[解決済み] Gmailの3分割アニメーションシナリオの完全動作サンプル?
-
[解決済み] TabLayoutに対応したandroidデザインでタブテキストのフォントを変更する
-
[解決済み] アンドロイドのdatepickerダイアログで最大の日付を設定するには?
-
[解決済み] TextView.setTextSizeの挙動がおかしい - テキストビューのテキストサイズを画面ごとに動的に設定する方法
-
[解決済み] グリッドビューの高さが削減される
-
[解決済み] ProjectScopeServices に Factory タイプのサービスはありません。