2013-03-24 96 views
3

我有一个自定义DialogPreference对话有它的布局设置了一个RelativeLayout的,它包含以下内容:Android的自定义对话框的TextView和背景颜色

  • 复选框
  • 的TextView
  • 文本字段

这在Android 4.0+中很好,因为我们使用的主题是Theme.Light,所以对话框的背景颜色是白色,默认文本是黑色的用于复选框标签, TextView中。然而,在2.3.3中,背景颜色是深灰色,所以很难看到文字......但是主题仍然是Theme.Light。

我认为制作自定义对话框是必要的,因为复选框启用/禁用文本字段。目前,我正在为此Dialog白色的相关布局制作背景颜色......但我不太喜欢这种解决方案,因为有些情况下2.3.3上的某些其他手机可能没有白色作为默认对话框背景...

有没有更好的方法来解决这个问题?

我发现这个人有同样的问题:Custom Support Dialog Fragment text is the wrong color

另外的问题:Android: Issue with showing dialog from Theme.Light activity

编辑:附截图。这是在运行2.3.3的LG Optimus 2X上的样子。在我的同事的三星Galaxy也运行2.3.3,背景更暗,所以你几乎看不到文字。

enter image description here

+0

您可以简单地覆盖自定义主题中的对话框背景,甚至使用资源限定符提供2.3.3所需的颜色。无论如何:请张贴屏幕截图,显示您遇到的问题。 – 2013-03-24 21:26:59

+0

我想保留操作系统的默认样式...我不想使用1个自定义主题,以便2.3.3和4.0+中的对话框将具有相同的样式...如果这是不可能的,那么是的,这是我猜我会做什么。 – 2013-03-24 21:48:57

回答

0

你可以做定制对话框主题样式文件,如:

less than API 11: 

<style name="MyDialogTheme" parent="android:Theme.Light" > 

API 11 and forward: 

<style name="MyDialogTheme" parent="android:Theme.Holo.Dialog" > 

然后在您的片段对话使用 “MyDialogTheme”:

... ... 
ContextThemeWrapper context = new ContextThemeWrapper(getActivity(), R.style.MyDialogTheme); 
AlertDialog.Builder builder = new AlertDialog.Builder(context); 
... ... 

希望这种帮助。

相关问题