Android自定义对话框文本视图和背景颜色

3
我有一个自定义的DialogPreference对话框,它的布局是在RelativeLayout中设置的,其中包含以下内容:
  • 复选框
  • TextView
  • 文本框
在Android 4.0+中,这很好,因为我们使用的主题是Theme.Light,因此对话框的背景颜色是白色,Checkbox标签和TextView的默认文本颜色为黑色。然而,在2.3.3中,背景颜色是深灰色,所以很难看到文本...但主题仍然是Theme.Light。
我认为需要制作自定义对话框,因为复选框会启用/禁用文本框。目前,我将此对话框的RelativeLayout的背景颜色设置为白色...但我不太喜欢这种解决方法,因为可能存在其他手机在2.3.3上并没有白色作为默认对话框背景的情况...
有更简洁的方法来解决这个问题吗?
我注意到这个人也有同样的问题:Custom Support Dialog Fragment text is the wrong color 还有一个问题:Android: Issue with showing dialog from Theme.Light activity 编辑:附上截图。这是LG Optimus 2X运行2.3.3时的样子。在我的同事的三星Galaxy上也是运行2.3.3,背景甚至更暗,所以你几乎看不到文本。

你可以在自定义主题中简单地覆盖对话框背景,甚至使用资源限定符为2.3.3提供所需的颜色。无论如何,请发布一个显示你面临问题的屏幕截图。 - a.bertucci
我想保留操作系统的默认样式... 我不想使用一个自定义主题,这样2.3.3和4.0+中的对话框将具有相同的样式... 如果这不可能,那么是的,我想那就是我必须做的。 - Jason Lee
1个回答

0

你可以在样式文件中创建自定义对话框主题,例如:

less than API 11:

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

API 11 and forward:

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

然后在您的Fragment对话框中使用"MyDialogTheme":

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

希望这可以帮到你。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接