在android中为对话框窗口添加边框

Sri*_*Sri 4 alert android dialog window border

我正在尝试为 Android 中的对话框窗口添加边框。使用带有以下几行的可绘制对象向对话框窗口添加了圆角

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:left="5dp"
        android:right="5dp"
        android:bottom="5dp"
        android:top="5dp">
    <shape android:shape="rectangle">
        <solid android:color="#ffbf80" />
        <corners android:radius="30dp" />
        <padding
        android:left="1dp"
        android:top="1dp"
        android:right="1dp"
        android:bottom="1dp" />
    </shape>
    </item>
</layer-list>
Run Code Online (Sandbox Code Playgroud)

要将边框添加到对话框中,我尝试通过添加笔触元素如下

<shape android:shape="rectangle">
    <solid
    android:color="#ffbf80" />
    <stroke android:color="#ff3300" android:width="2dp"/>
    <corners
    android:radius="30dp" />
    <padding
    android:left="1dp"
    android:top="1dp"
    android:right="1dp"
    android:bottom="1dp" />
</shape>
Run Code Online (Sandbox Code Playgroud)

但这也在对话框中的每个元素周围创建一个边框,如文本视图、图标、按钮。我只想要窗口的轮廓边框。

我已经使用 AlertDialog.Builder 在 java 代码中创建了警报对话框,

myDialogBuilder=new AlertDialog.Builder(new 
ContextThemeWrapper(getActivity(), 
R.style.CustomDialog))
.setTitle(title.getText().toString())
.setMessage(myText)
.setPositiveButton("Done", new DialogInterface.OnClickListener() {
              public void onClick(DialogInterface dialog, int which)
              {
                 getDialog().dismiss();
              }
              });

myDialog=myDialogBuilder.create();

myDialog.setOnShowListener(new DialogInterface.OnShowListener() {
                @Override
                public void onShow(DialogInterface dialog) {
                    Window view=((AlertDialog)dialog).getWindow();
                    view.setBackgroundDrawable(new 
                    ColorDrawable(Color.TRANSPARENT));
                ...
                }
 });
Run Code Online (Sandbox Code Playgroud)

我的styles.xml中有以下对话框

 <style name="CustomDialog" parent="@style/ThemeOverlay.AppCompat.Dialog">
    <item name="android:backgroundDimEnabled">true</item>
    <item name="android:background">@drawable/dialog_bg</item>
    <item name="android:textColorPrimary">@color/my_textcolor</item>
</style>
Run Code Online (Sandbox Code Playgroud)

请帮助我了解应该进行哪些更改才能显示警报对话框边框。

谢谢

Sri*_*Sri 5

通过在代码中进行以下更改,我能够解决警报对话框的边框问题。

我在创建对话框时没有指定主题,而是在 dialog.setOnShowListener() 中将可绘制资源添加到对话框窗口中

Window view=((AlertDialog)dialog).getWindow();
view.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
// to get rounded corners and border for dialog window
view.setBackgroundDrawableResource(R.drawable.dialog_bg);
Run Code Online (Sandbox Code Playgroud)

我只需要一个标题、消息和我的警报对话框中的一个按钮。所以我使用标准的 AlertDialog.Builder 方式来创建它,尽管它也可以使用自定义布局文件和设置视图来完成。