如何使用“活动”作为对话框复制AlertDialog

时间:2019-02-21 15:59:30

标签: android dialog

我有一个AlertDialog在整个应用程序中使用。我对它的外观以及将其复制为与我使用Activity as a Dialog时完全相同的外观感到满意。在某些情况下,我需要使用Activity as a Dialog而不是AlertDialog,因为我必须防止应用程序启动仅在某些情况下发生的新活动。

这是我的AlertDialog的样子。

AlertDialog

这是我的Activity As A Dialog

enter image description here

如何匹配第二个对话框以使其看起来完全像“警报对话框”?主对话框使用带有粉红色单选按钮的默认主题,而第二个则没有。同样,第二个对话框更宽更短。有什么方法可以找到警报对话框的布局属性,并将这些属性添加到AAAD的xml中吗?还是有更好的方法来解决这个问题?

这是Alert Dialog

的构建器代码
 AlertDialog.Builder alt_bld = new AlertDialog.Builder(this);
    alt_bld.setTitle("Alert Dialog"); 


    alt_bld.setSingleChoiceItems(myArray.toArray(new String[myArray.size()]), 0, new DialogInterface.OnClickListener()

AAAD的代码

 setContentView(R.layout.activity_da_aamount_to_finish);
    setTitle("Activity As A Dialog");

清单文件

<activity android:name=".DaAAmountToFinish"
              android:theme="@style/Theme.AppCompat.Light.Dialog.MinWidth">
              android:excludeFromRecents="true"></activity>

此活动的xml只是带有三个按钮的RadioGroup。

我应该怎么做?

如果我将AAAD的清单主题更改为android:theme="@style/AppTheme">,它将以我想要的样式出现,但作为一个整体活动。我如何保持对话框外观并实现此主题。

1 个答案:

答案 0 :(得分:1)

如果要复制对话框的结构,可以使用Android Studio的布局检查器工具,它将显示视图树。 Layout inspector guide

对于粉红色,Android从样式文件中获取它。此颜色应该是AppTheme的colorAccent或colorPrimary属性(无法准确记住)。

enum ButtonStyle {
  primary = "primary"
  
}

希望这会有所帮助!