通过扩展Dialog或AlertDialog来定制对话框

我想制作一个自定义的Dialog 。 因为我不喜欢它的风格,我想要有圆angular矩形而不是尖angular。 我知道如何在AndroidManifest.xml通过主题来实现它,例如,我使用:

 android:theme="@style/Theme.CustomDialog" 

Theme.CustomDialog.xml

 <style name="Theme.CustomDialog" parent="android:style/Theme.Dialog"> <item name="android:windowBackground">@drawable/filled_box</item> <item name="android:windowNoTitle">true</item> filled_box.xml <shape xmlns:android="http://schemas.android.com/apk/res/android"> <solid android:color="#ffffffff"/> <stroke android:width="3dp" color="#ffff8080"/> <corners android:radius="30dp" /> <padding android:left="10dp" android:top="10dp" android:right="10dp" android:bottom="10dp" /> </shape> 

如何通过扩展DialogAlertDialog来实现类似的结果?

  • Android Studio:呈现问题缺less样式 - 为此布局select正确的主题,无法使用ID查找样式
  • 如何在Android Studio中将主题从Darcula还原为默认值
  • 老设备上的全息快速滚动看起来
  • TextInputLayout:当不聚焦时提示标签的颜色不同
  • ?android:attr /在向后兼容的应用程序中的用法
  • Android - 操作栏不显示使用Theme.AppCompat
  • 错误:属性“主题”已被定义
  • AppCompat DayNight主题不适用于Android 6.0?
  • 在你的类的构造函数中,扩展Dialog调用super(context, R.style.CustomDialog); 我已经做了很多次,创build具有特定主题的自定义对话框。

    但是,如果主题是关于要更改的对话框的唯一内容,则可以尝试实例化Dialog类的实例,并将其传递给主题ID,如Dialog dialog = new Dialog(context, R.style.CustomDialog);

    扩展Dialog的一个例子:

     public class MyDialog extends Dialog { public MyDialog(final Context context) { // Set your theme here super(context, R.style.MyDialogTheme); // This is the layout XML file that describes your Dialog layout this.setContentView(R.layout.myDialogLayout); } } 

    您将添加到此类的其余代码将与您在Activity类中编写的内容几乎完全相同。