我正在尝试使用完全自定义的Dialog或PopupWindow,没有任何默认的Android UI控件(标题,背景,按钮等)。
这有可能吗?我花了几个小时寻找这个,但没有运气......看起来这应该很容易,但我找不到它。
最好是通过从XML中提升视图,但此时任何可行的方法都会很好。
感谢。
答案 0 :(得分:28)
我采取的步骤:
setContentView(x, y)
,x
为你的R.layout,y
为R.style.popupStyle(见下文)。<style name="Theme.Dialog"> <item name="android:windowFrame">@null</item> <item name="android:windowTitleStyle">@android:style/DialogWindowTitle</item> <item name="android:windowBackground">@android:drawable/panel_background</item> <item name="android:windowIsFloating">true</item> <item name="android:windowContentOverlay">@null</item> <item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item> <item name="android:windowSoftInputMode">stateUnspecified|adjustPan</item> </style>
您将收到一些错误,只需通过从官方Android styles.xml和themes.xml文件中复制更多内容来解决它们。这是我的styles.xml文件的内容:http://pastebin.com/RRR15YYS
这只是给你一个白色的弹出窗口,没有边框,没有。开始定制。 :)
感谢mbaird让我走上正轨。
[编辑]我需要再次查找我自己的答案,并且我花了至少十分钟搜索官方的android样式/主题文件,所以在这里它们是,以供将来参考: styles.xml和themes.xml。
答案 1 :(得分:8)
听起来您正在尝试真正自定义AlertDialog。对于您想要做的事情,您最好只创建一个扩展Dialog的类,类似于通过编写扩展Activity的类来创建活动的方式。
您可以通过在自定义Dialog类的onCreate()方法中调用setContentView()来设置布局XML,就像在Activity中一样。
我已经遇到过去可以自定义AlertDialogs的限制,我刚刚实现了自己的Dialog类来获得我需要的自定义级别。