15

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

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

最好是通过从 XML 扩展视图来实现,但在这一点上,任何可以正常工作的东西都会很好。

谢谢。

4

2 回答 2

29

我采取的步骤:

  1. 创建一个扩展Dialog的类。
  2. 在 onCreate 中,调用R.layout 和setContentView(x, y)R.style.popupStyle (见下文)。xy
  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">真</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 样式.xml 和主题.xml 文件中复制更多内容来解决它们。这是我的 styles.xml 文件的内容:http: //pastebin.com/RRR15YYS

那只是给你一个白色的弹出窗口,没有边框,什么都没有。开始定制。:)

感谢 mbaird 让我走上正轨。

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

于 2010-05-05T16:17:40.517 回答
8

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

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

过去,我在自定义 AlertDialogs 方面遇到了限制,我刚刚实现了自己的 Dialog 类以获得所需的自定义级别。

于 2010-05-05T14:17:24.447 回答