Android:如何制作模态自定义视图?

发布于 2024-10-18 04:41:49 字数 94 浏览 2 评论 0原文

我想制作自己的对话框,完全由我自己绘制,作为自定义视图。我可以以这样的方式显示它:它显示在所有其他视图之上,并且所有触摸事件(甚至是对话框区域之外的事件)都重定向到对话框吗?

I would like to make my own dialog, completely drawn myself, as a custom view. Can I display it in such a way that it displays above all other views and that all touch events, even those outside the dialog's area, are redirected to the dialog?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

离不开的别离 2024-10-25 04:41:49

我发现使用透明的活动和 startActivityForResult() 给了我完全的自由,我希望我的“对话框”的外观和行为如何。所以我建议你看看:如何在 Android 上创建透明 Activity?

使用全屏和您选择的较暗背景:

<style name="Theme.Transparent" parent="@android:style/Theme.Translucent.NoTitleBar.Fullscreen">     
<item name="android:windowBackground">@color/transparentActivityBackground</item>    
</style>

然后在 strings.xml 中:

<color name="transparentActivityBackground">#55000000</color>

如果您想模糊上一个 Activity 的屏幕,请在 setContentView 之前使用此行:

this.getWindow().addFlags(WindowManager.LayoutParams.FLAG_BLUR_BEHIND); 

I find that using a transparent activity and startActivityForResult() gives me a total freedom how I want my "dialog" to look and behave. So I suggest you check it out: How do I create a transparent Activity on Android?

With full screen and a darker background of your choice:

<style name="Theme.Transparent" parent="@android:style/Theme.Translucent.NoTitleBar.Fullscreen">     
<item name="android:windowBackground">@color/transparentActivityBackground</item>    
</style>

Then in strings.xml:

<color name="transparentActivityBackground">#55000000</color>

If you want to blur the screen of the previous activity then use this line before setContentView:

this.getWindow().addFlags(WindowManager.LayoutParams.FLAG_BLUR_BEHIND); 
余罪 2024-10-25 04:41:49

这应该可以通过将根元素的高度/宽度设置为除 fill_parent 之外的任何值来实现。

您还可以通过创建继承内置 Android 对话框主题的自定义主题来实现此目的。

http://developer.android.com/guide/topics/ui/themes.html

This should be possible by setting the height/width of the root element to anything but fill_parent.

You could also achieve this by creating a custom theme that inherits from the built in android dialog theme.

http://developer.android.com/guide/topics/ui/themes.html

ヅ她的身影、若隐若现 2024-10-25 04:41:49

这是我的解决方法。

首先,使用 Window#getDecorView().findViewById(android.R.id.content) 获取装饰视图的内容子视图,它是一个 FrameLayout

然后,将您的自定义视图添加到此 FrameLayout 中,它将位于其他视图的顶部。

Here's my workaround.

First, obtain the decor view's content child view, which is a FrameLayout, using Window#getDecorView().findViewById(android.R.id.content).

Then, add your custom view to this FrameLayout and it will be at the top of other views.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文