【问题标题】:Setting the "dim" color for a Dialog为对话框设置“暗淡”颜色
【发布时间】:2011-09-10 14:11:03
【问题描述】:

我了解如何设置对话框的暗淡量。但是,我更喜欢颜色是半透明的白色而不是半透明的黑色(或者是深灰色?)。有什么想法吗?

【问题讨论】:

  • 那么你是如何实现的呢?我也在努力解决这个问题。请回复。

标签: android user-interface dialog


【解决方案1】:

首先,您需要创建白色 9-patch 可绘制对象。类似于panel_background.9.png drawable(黑色),可以在路径中找到:

 <android-sdk-dir>/platforms/android-#/data/res/drawable-hdpi/panel_background.9.png

假设您的可绘制对象将被称为white_panel_background.9.png


选项 1。

您可以创建自定义主题,扩展 Theme.Dialog 并使用自定义白色 9 补丁可绘制覆盖 windowBackground 属性。

 <style name="Theme.WhiteDialog" parent="@android:style/Theme.Dialog">
     <item name="android:windowBackground">@drawable/white_panel_background</item>  
 </style>

然后在你的对话框中使用这个主题:

Dialog dialog = Dialog(context, R.style.Theme_WhiteDialog);

选项 2。

如果你已经创建了对话框(默认主题),你仍然可以更新它的窗口背景:

Dialog dialog = ...;
...
Resources res = getResources();
Drawable drawable = res.getDrawable(R.drawable.white_panel_background);
dialog.getWindow().setBackgroundDrawable(drawable);

注意:您需要将文本颜色从白色更改为黑色(使其在白色背景上可见)。
注意:您需要为 AlertDialog 做一些额外的步骤,因为它使用自己的背景样式。更多详情请见AlertDialog style


【讨论】:

  • 我明天试试这个。这是否会更新对话框的窗口背景或覆盖对话框周围屏幕的暗淡?
  • 不用担心。对外部暗淡有什么想法吗?
  • 我做了一些调查,你实际上无法模拟“白色”暗淡,因为这是 WindowManager 中的硬编码效果。您可以使窗口充满整个屏幕并足够白和透明。但这不是动画(默认情况下),背景也没有变暗。
  • 感谢您的调查。我想我会在我的 glsurfaceview 中创建效果,或者可能是 alphaanimation。
猜你喜欢
  • 2015-05-27
  • 1970-01-01
  • 1970-01-01
  • 2016-09-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多