我正在尝试创建一个完全自定义的对话框或弹出窗口,没有任何默认的Android UI控件(标题、背景、按钮等)。
这是否可能?我花了几个小时搜索,但没有运气... 这似乎应该很容易实现,但我找不到。
最好是通过从XML填充View来实现,但此时任何能正常工作的东西都很好。
谢谢。
我正在尝试创建一个完全自定义的对话框或弹出窗口,没有任何默认的Android UI控件(标题、背景、按钮等)。
这是否可能?我花了几个小时搜索,但没有运气... 这似乎应该很容易实现,但我找不到。
最好是通过从XML填充View来实现,但此时任何能正常工作的东西都很好。
谢谢。
我采取的步骤:
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/themes文件,所以在这里,供日后参考: styles.xml和themes.xml。
w.setGravity(Gravity.CENTER);
。这是否会影响我的边距设置?因为我无法将其定位到我想要的位置。一旦我添加了边距,事情就变得混乱了。 - user344801看起来你想要真正定制一个AlertDialog。为了实现你想要的效果,你最好创建一个继承Dialog类的自定义类,就像编写一个继承Activity类的活动一样。
你可以在自定义对话框类的onCreate()方法中调用setContentView()来设置布局XML,就像在Activity中一样。
我以前曾遇到过限制AlertDialog定制程度的问题,所以我只能实现自己的Dialog类来获得所需的定制级别。