[解決済み] BottomSheetDialogFragmentの角丸について
2022-04-20 17:59:42
質問
BttomSheetDialogFragmentをカスタムし、BottomViewの上部に角丸をつけたいのですが。
これは、下から表示させたいレイアウトを膨らませる私のカスタムクラスです。
View mView;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
mView = inflater.inflate(R.layout.charge_layout, container, false);
initChargeLayoutViews();
return mView;
}
そして、このXMLリソースファイルを背景として持っています。
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle"
>
<corners android:topRightRadius="35dp"
android:topLeftRadius="35dp"
/>
<solid android:color="@color/white"/>
<padding android:top="10dp"
android:bottom="10dp"
android:right="16dp"
android:left="16dp"/>
</shape>
問題は、このリソースファイルをLayoutのルート要素の背景に設定しても、角が丸くならないことです。
以下のコードは使えません。
this.getDialog().getWindow().setBackgroundDrawableResource(R.drawable.charge_layout_background);
BottomSheetDialogのデフォルトの背景を上書きし、私のBottom Viewの上に半透明のグレー色が存在しなくなるからです。
解決方法は?
カスタムDrawableを作成する
rounded_dialog.xml
:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="@android:color/white"/>
<corners android:topLeftRadius="16dp"
android:topRightRadius="16dp"/>
</shape>
をオーバーライドします。
bottomSheetDialogTheme
で
styles.xml
を背景として使用します。
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="bottomSheetDialogTheme">@style/AppBottomSheetDialogTheme</item>
</style>
<style name="AppBottomSheetDialogTheme"
parent="Theme.Design.Light.BottomSheetDialog">
<item name="bottomSheetStyle">@style/AppModalStyle</item>
</style>
<style name="AppModalStyle"
parent="Widget.Design.BottomSheet.Modal">
<item name="android:background">@drawable/rounded_dialog</item>
</style>
これは、アプリのすべてのBottomSheetDialogsを変更します。
関連
-
Androidのadbデバイスがオフラインであることが判明
-
Android.mk:7: *** セパレータがありません。
-
Gradle の同期に失敗しました。com.android.tools.build:gradle が見つかりませんでした。
-
アンドロイドプロジェクトのパッケージングにgradleを使用する際の問題点
-
Android のパッケージングに失敗し、Android リソースのリンクに失敗したことを示すプロンプトが表示される
-
Android studioのインストールと問題発生、Emulator: PANIC: AVDのシステムパスが見つかりません。
-
Android ProgressBarの色を変更する
-
Android Get set image.setImageResource(R.drawable.xxx) リソース
-
アンドロイドにおけるトークンの利用
-
[解決済み】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: インポートモジュールエラー Android リソースのリンクに失敗しました
-
ActivityはOnFragmentInteractionListenerを実装しなければならないに関する質問
-
GoogleMapと連携し、位置情報の取得が可能
-
Androidで、onTouchEventでダブルクリックを実装し、ダブルクリックイベントとして判定する方法
-
ConstraintLayoutのいくつかのプロパティの概要(RelativeLayoutの強化版、LinearLayoutの比例プロパティを含む、階層ツールの削減)。
-
AndroidでListViewを使ってカスタムテーブルを描画する
-
アンドロイドシェイプ、グラデーション、角丸、ボーダーラインの設定
-
超シンプルなアンドロイドのタイムディレイ機能
-
[解決済み] アンドロイドで角丸のカスタムダイアログを作成する方法