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

时间:2011-02-20 15:39:49

标签: android layout view

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

3 个答案:

答案 0 :(得分:10)

我发现使用透明活动和startActivityForResult()让我完全自由地想要“对话”的外观和行为。所以我建议您查看一下:How do I create a transparent Activity on Android?

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

<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>

如果您想模糊上一个活动的屏幕,请在setContentView:

之前使用此行
this.getWindow().addFlags(WindowManager.LayoutParams.FLAG_BLUR_BEHIND); 

答案 1 :(得分:1)

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

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

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

答案 2 :(得分:0)

这是我的解决方法。

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

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