Android Custom PopupWindow / Dialog

时间:2010-05-05 13:17:15

标签: android dialog skinning popupwindow

我正在尝试使用完全自定义的Dialog或PopupWindow,没有任何默认的Android UI控件(标题,背景,按钮等)。

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

最好是通过从XML中提升视图,但此时任何可行的方法都会很好。

感谢。

2 个答案:

答案 0 :(得分:28)

我采取的步骤:

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

答案 1 :(得分:8)

听起来您正在尝试真正自定义AlertDialog。对于您想要做的事情,您最好只创建一个扩展Dialog的类,类似于通过编写扩展Activity的类来创建活动的方式。

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

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