我想将自己的对话框完全绘制成自定义视图。我是否可以以显示在所有其他视图之上的方式显示它,并且所有触摸事件(甚至是对话框区域之外的事件)都会重定向到对话框?
答案 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对话框主题的自定义主题来实现此目的。
答案 2 :(得分:0)
这是我的解决方法。
首先,使用FrameLayout
获取装饰视图的内容子视图,Window#getDecorView().findViewById(android.R.id.content)
。
然后,将自定义视图添加到此FrameLayout
,它将位于其他视图的顶部。