AlertDialog
カスタムview
(タイトルやフッターなし) で角を丸くしたものを作成しようとしています。その方法についての投稿をたくさん見て、いろいろ試してみましたが、思い通りにビルドできません。
これが私の目標です:
呼び出されたdialog_background.xmldrawable
用に作成しました:dialog
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
<solid
android:color="#FFAAAAAA" />
<stroke
android:width="2dp"
android:color="#FF000000" />
<corners android:radius="20dp" />
</shape>
そして、style
それを使用するために a を追加しました:
<style name="MyDialog" parent="@android:style/Theme.Dialog">
<item name="android:background">@drawable/dialog_background</item>
</style>
layout
私のカスタムのにview
は 2 つのボタンがあります。LinearLayout
ここでは、簡単にするために空を示します。これは playdialog.xml です:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
style="@style/MyDialog"
>
</LinearLayout>
を構築するには、Dialog
を使用しDialogFragment
ます。これはそのonCreateDialog
機能です:
public Dialog onCreateDialog(Bundle savedInstanceState) {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
LayoutInflater inflater = getActivity().getLayoutInflater();
builder.setView(inflater.inflate(R.layout.playdialog, null));
return builder.create();
}
OK、そのようなコードを使用すると、次のようになります。
コードdialog
を変更して背景を透明に設定しようとしました:DialogFragment
public Dialog onCreateDialog(Bundle savedInstanceState) {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
LayoutInflater inflater = getActivity().getLayoutInflater();
builder.setView(inflater.inflate(R.layout.playdialog, null));
**NEW**
Dialog d = builder.create();
d.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));
return d;
}
結果はまったく同じなので、私の下にある白い四角形dialog
はview
、dialog
. の背景を既にview
dialog_background.xml に設定しているため、透明に設定できないか、角や色などが失われます。
次に、dialog
dialog_background.xml を使用して の背景を変更し、ビューの背景を単色にすることにしました。
カスタムview
layout
(playdialog.xml) で、style="@style/MyDialog" を次のように置き換えました。
android:background="#FFAAAAAA"
そして、私DialogFragment
はこのコードを使用しました:
public Dialog onCreateDialog(Bundle savedInstanceState) {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
LayoutInflater inflater = getActivity().getLayoutInflater();
builder.setView(inflater.inflate(R.layout.playdialog, null));
**NEW**
Dialog d = builder.create();
d.getWindow().setBackgroundDrawableResource(R.drawable.dialog_background);
return d;
}
これは私が得るものです:
それはほとんど私が望んでいたものですが、私のカスタムボーダーを見ることができるview
ので、十分ではありません. この時点で、他に何ができるかわかりませんでした。
どうすれば解決できるか知っている人はいますか?
ありがとう!