Android Custom PopupWindow/Dialog

ben*_*nvd 14 android dialog skinning popupwindow

我想要一个完全自定义的Dialog或PopupWindow,没有任何默认的Android UI控件(标题,背景,按钮等等).

这有可能吗?我花了几个小时寻找这个,但没有运气......看起来这应该很容易,但我找不到它.

最好是通过从XML中扩展View,但此时任何可行的东西都会很好.

谢谢.

ben*_*nvd 28

我采取的步骤:

  1. 创建一个扩展Dialog的类.
  2. 在OnCreate,调用setContentView(x, y)x被你R.layout和y被R.style.popupStyle(见下文).
  3. 在res/values/style.xml中,您需要覆盖默认的DialogWindow样式.我试着制作一个以这个为父母的风格,但仍然没有清除所有默认值.所以我检查了Android git树并获得了默认样式,并且只是复制粘贴它.这是一个:
<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让我走上正轨.

[edit]我需要再次查找我自己的答案,并且我花了至少十分钟搜索官方的android样式/主题文件,所以在这里它们是,以供将来参考: styles.xmlthemes.xml.


Mar*_*k B 8

听起来你正在尝试真正定制AlertDialog.对于您想要做的事情,您最好只创建自己的扩展Dialog的类,类似于通过编写扩展Activity的类来创建活动的方法.

您可以通过在自定义Dialog类的onCreate()方法中调用setContentView()来设置布局XML,就像在Activity中一样.

我已经遇到过去可以自定义AlertDialogs的限制,我刚刚实现了自己的Dialog类来获得我需要的自定义级别.