【问题标题】:How to change to text colour of the Cut/Copy/Paste popup menu如何更改剪切/复制/粘贴弹出菜单的文本颜色
【发布时间】:2017-08-18 23:23:09
【问题描述】:

我的 styles.xml 中有以下内容

<style name="dialog_style" parent="Theme.AppCompat.Light.Dialog.Alert">
    <item name="colorAccent">#ffaaaa00</item>
    <item name="android:background">#ff444400</item>
    <item name="android:textColorPrimary">#ffa25600</item>
</style>

(可怕的颜色仅供测试!)

这给出了以下内容

我想要的是深色/黑色背景,但是当我这样做时,文本无法阅读。

问:如何更改“剪切”、“复制”...的文字颜色?

tia, 凯文

【问题讨论】:

  • 你是如何使用这个dialog_style的?在代码或 xml 中?如果是xml,那么你使用了什么属性?
  • 请参阅我的评论重新“转换为片段”

标签: android colors app-themes


【解决方案1】:

我认为这比 user3247782 的解决方案要好一些,

<style name="CustomAlertDialog" parent="Theme.AppCompat.Light.Dialog.Alert">
    ...
    <item name="android:popupBackground">@android:color/transparent</item>
</style>

【讨论】:

    【解决方案2】:

    您可以通过以下样式名称更改它们:

    <item name="colorAccent">@color/twoCuteSelectionHandlersColor</item>
    <item name="android:textColorHighlight">@color/selectionColor</item>
    

    您还可以在 xml 布局中使用 android:textColorHighlight 属性或以编程方式直接为太平洋 EditText 设置突出显示颜色:

    et.setHighlightColor(color);
    

    对于上下文菜单,您需要创建自己的上下文菜单。查看this question 了解如何禁用默认上下文菜单和实现自定义菜单。

    【讨论】:

      【解决方案3】:

      这不是一个真正的答案。黑底黑编辑菜单仅由 AlertDialog 中包含的 EditText 生成。 Fragment 中的相同代码会产生黑底白字。

      所以我通过将 AlertDialog 转换为 Fragment 来“解决”我的问题。

      不过,最初的问题仍未得到解答。

      【讨论】:

        【解决方案4】:

        Alert Dialog 和 Popup Menu 一般以@ColorAccent 的颜色为背景。因此,请尝试更改 colorAccent 或仅使用您想要的规范填充自定义 xml。

        【讨论】:

          【解决方案5】:

          只需将它的父级从 Theme.Material.Light 更改为 Theme.Material 。 它会使文本变白,那里。

          【讨论】:

            【解决方案6】:

            我通过在警报对话框的样式中设置不透明度的背景颜色来修复它

            在styles.xml中

            <style name="AppCompatAlertDialogStyle">
            ...
            <item name="android:background">@color/black_overlay</item>
            ...
            </style>
            

            在colors.xml中

            <color name="black_overlay">#66000000</color>
            

            【讨论】:

              【解决方案7】:

              如果你使用MaterialAlertDialogBuilder,那么你可以通过colorSurface属性定义背景颜色。

              然后在样式中,您可以将背景设置为透明。

              android:background="@android:color/transparent" 
              

              对话框将使用colorSurface 中定义的一种,“复制/粘贴”将使用默认系统颜色(例如白色)。

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多