相关疑难解决方法(0)

如何在android中创建自定义对话框?

我想创建一个自定义对话框,如下所示

在此输入图像描述

我尝试过以下的事情.

  1. 我创建了AlertDialog.Builder的子类,并使用了自定义标题和自定义内容视图并使用了它,但结果并不像预期的那样.

  2. 另一种尝试是继承DialogFragment并在onCreateDialog中自定义对话框,但结果不是预期的.

  3. 然后我尝试使用普通的Dialog类.结果并不像预期的那样.

在所有三种情况下,问题是当我忽略标题视图时,对话框的大小不是预期的,当我使用标题视图时,结果是内容视图周围有一个粗边框(实际上看起来很糟糕).现在我脑子里有两个问题......

  1. 我怎样才能做到这一点?由于我已经尝试了很多东西,因此我们将更加赞赏直接的答案.

  2. 在Android应用程序中显示错误或警告对话框的最佳方法是什么?

编辑 Android开发人员文档建议我们应该使用DialogFragments或Dialogs向用户显示错误/警报消息.但有一次他们说......

提示:如果需要自定义对话框,则可以将"活动"显示为对话框,而不是使用"对话框API".只需创建一个活动,并将其主题设置为清单元素中的Theme.Holo.Dialog.

那是什么意思?使用Activity只是为了显示错误消息是不是太多了?

android android-dialog android-dialogfragment

333
推荐指数
10
解决办法
56万
查看次数

如何获得一个Dialog样式活动窗口来填充屏幕?

我正在使用对话框主题集的活动,我希望它是全屏的.我尝试了各种各样的东西,甚至通过WindowManager手动将窗口扩展到全宽和高度,但没有任何作用.

显然,对话框窗口(或具有对话框主题的活动)将仅根据其内容进行扩展,但即使这样也不总是有效.例如,我显示了一个进度条圆,其宽度和高度设置为FILL_PARENT(其布局容器也是如此),但是,对话框仍然围绕着更小的进度条而不是填充屏幕.

必须有一种方法可以在对话框窗口中显示一些小的内容,但是在没有内容调整大小的情况下将其扩展到全屏大小?

user-interface android dialog

135
推荐指数
6
解决办法
10万
查看次数

显示指标减去状态栏?

我需要获取应用程序可以在设备上使用的显示矩形的尺寸.为此,我尝试使用:

Display display = getWindowManager().getDefaultDisplay();
int width = display.getWidth();
int height = display.getHeight();
Run Code Online (Sandbox Code Playgroud)

我的问题是它给了我整个显示器的高度,并且显示器顶部有一个"状态/通知"栏,应用程序无法使用.

我需要应用程序可以使用的实际维度.

为了帮助您更好地理解这个问题,我将留下一个图片:

在此输入图像描述

android

31
推荐指数
2
解决办法
1万
查看次数

windowMinWidthMajor和android:windowMinWidthMajor有什么区别

我想为ProgressDialog设置一个合适的样式.我喜欢默认的,但我想自定义它.我试过使用AppCompat对话框,但它们都为我的Dialog设置了一些奇怪的宽度和高度.

我发现从MaterialDialog扩展可以解决这个问题,所以这段代码可以工作:

<style name="ProgressDialogTheme" parent="MaterialBaseTheme.AlertDialog" >
</style>
Run Code Online (Sandbox Code Playgroud)

这是因为MeterialDialog本身设置了自定义宽度

<style name="MaterialBaseTheme.AlertDialog" parent="MaterialBaseTheme.Dialog">
        <item name="android:windowMinWidthMajor">@android:dimen/dialog_min_width_major</item>
        <item name="android:windowMinWidthMinor">@android:dimen/dialog_min_width_minor</item>
    </style>
Run Code Online (Sandbox Code Playgroud)

我发现AppCompat对话框设置了相同的自定义宽度,这里是:

<style name="Base.Theme.AppCompat.Light.Dialog.Alert">
        <item name="windowMinWidthMajor">@dimen/abc_dialog_min_width_major</item>
        <item name="windowMinWidthMinor">@dimen/abc_dialog_min_width_minor</item>
    </style>
Run Code Online (Sandbox Code Playgroud)

但它不起作用

唯一的区别是MeterialDialog属性开头的andorid命名空间.

有人可以解释为什么android:windowMinWidthMajor 这个伎俩?

android

7
推荐指数
2
解决办法
3768
查看次数