当前位置: 首页 > 知识库问答 >
问题:

如何在Android中更改设置片段的文本颜色?

楚岳
2023-03-14

我想为我的应用程序创建一个暗模式,我唯一的问题是我无法更改片段中的文本颜色,用户可以打开/关闭暗模式。这就是为什么我无法更改清单中的主题对此问题的任何解决方案?

if(!DarkTheme()) {
            setTheme(R.style.AppTheme);
        } else {
            setTheme(R.style.DarkAppTheme);
            getSupportActionBar().setBackgroundDrawable(new ColorDrawable(getResources().getColor(R.color.blacklight, null)));
            View fragment = (View) findViewById(R.id.settings_fragment);
            fragment.setBackgroundColor(getResources().getColor(R.color.Dark, null));
        }

这是为了检测是否打开了暗模式,背景颜色是否发生了变化,但我不知道如何改变片段中的文本颜色。

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools">

    <PreferenceCategory
        app:iconSpaceReserved="false"
        android:key="PREFS"
        android:title="Main settings (BETA)">

        <SwitchPreference
            android:key="darktheme"
            android:id="@+id/DarkTheme"
            app:iconSpaceReserved="false"
            android:title="Dark Theme"
            android:summary="Enable dark theme (BETA)"
            android:defaultValue="false" />

    </PreferenceCategory>

    <PreferenceCategory
        app:iconSpaceReserved="false"
        android:key="DOWN"
        android:title="Download settings">

        <CheckBoxPreference
            android:id="@+id/MobileData"
            android:key="mobiledata"
            android:title="Mobiele data"
            android:icon="@drawable/ic_network_cell_blue_24dp"
            android:summary="Download de voicemails op mobiele data"
            android:defaultValue="true"/>

    </PreferenceCategory>

    <PreferenceCategory
        app:iconSpaceReserved="false"
        android:key="Other"
        android:title="Other">

        <Preference android:title="Boodschap opnemen"
            android:id="@+id/Boodschap"
            android:key="@string/setVoicemail"
            android:summary="Spreek je eigen voicemail boodschap in">

            <intent
                android:action="android.intent.action.MAIN"
                android:targetPackage="com.tismi.voozzle_main"
                android:targetClass="com.tismi.voozzle_main.Popup" />

        </Preference>

        <Preference android:title="App uitleg"
            android:id="@+id/AppUitleg"
            android:key="AppUitleg"
            android:summary="Loop de uitleg van de app nog een keer door">

            <intent
                android:action="android.intent.action.MAIN"
                android:targetPackage="com.tismi.voozzle_main"
                android:targetClass="com.tismi.voozzle_main.Reopen_Expanation" />

        </Preference>

        <Preference android:title="Voozzle uitschakelen"
            android:key="voozzle_off"
            android:id="@+id/VoozzleOff"
            android:summary="Door op deze knop te klikken schakel je voozzle uit">

            <intent
                android:action="android.intent.action.MAIN"
                android:targetPackage="com.tismi.voozzle_main"
                android:targetClass="com.tismi.voozzle_main.tasks.TurnoffTask" />

        </Preference>

    </PreferenceCategory>

</PreferenceScreen>

这是我的设置页面(片段),我想更改标题和摘要的颜色。

<style name="AppTheme" parent="Base.Theme.AppCompat.Light.DarkActionBar">
        <item name="colorPrimary">@color/colorPrimaryLight</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
        <item name="android:windowBackground">@color/white</item>
        <item name="panelBackground">@color/white</item>
    </style>

    <style name="DarkAppTheme" parent="Base.Theme.AppCompat.Light.DarkActionBar">
        <item name="colorPrimary">@color/Dark</item>
        <item name="colorPrimaryDark">@color/Dark</item>
        <item name="colorAccent">@color/white</item>
        <item name="android:windowBackground">@color/Dark</item>
        <item name="panelBackground">@color/Dark</item>
        <item name="android:textColor">@color/white</item>
        <item name="android:textColorPrimary">@color/white</item>
        <item name="android:textColorSecondary">@color/white</item>
        <item name="android:textColorTertiary">@color/white</item>
    </style>

共有2个答案

阎涵容
2023-03-14

好吧,我想出来了,很简单

getContext().getTheme().applyStyle(R.style.PreferenceScreen, true);

这就是活动的风格,谢谢你的帮助!

毕和志
2023-03-14

尝试使用ContextThemeWrapper设置主题。

final Context contextThemeWrapper = new ContextThemeWrapper(getActivity(), R.style.PreferenceScreen);
LayoutInflater localInflater = inflater.cloneInContext(contextThemeWrapper);

在风格中。xml定义你的主题。

<style name="PreferenceScreen" parent="YourApplicationThemeOrNone">
    <item name="android:textColor">@color/white</item>
</style>
 类似资料:
  • 我在javaFX中有一个文本字段,在该字段中键入的任何内容都必须以蓝色显示,这可以通过css实现吗?如果是,那么如何?

  • 我想根据用户需要将我写的文本(和字体颜色)更改为另一种颜色。 我制作了一个JFrame,并添加了JTextPane。在文本窗格的右侧,我有一个不同颜色的列表(“白色”、“黑色”、“绿色”等)。Jframe还有一个JMenuBar,如果用户突出显示列表中的一个元素(比如黑色),我想更改textpane的背景色(我知道这很愚蠢,但这是老师的作业) 问题是,文本是黑色的,所以当我改变背景颜色时,文本“消

  • 我在动态应用程序中使用片段,其中User.java文件包含值,而< code>TabbedActivity.java文件包含三个片段。我想将文本设置为< code > profile rgament . Java 中的< code>TextView。因此,我在< code > fragment _ profile . XML 中创建了一个< code>TextView,并使用以下代码从< code

  • 如何设置文本字段中文本的颜色?例如,将“你好和谐”字段中的“和谐”字体设置为红色。Android代码实现如下: SpannableStringBuilder ssb=新的SpannableStringBuilder();ssb。setSpan(新的ForegroundColorSpan(getCurrentHintTextColor()),i,i 1,0);

  • 我想在TextField中更改字体颜色。我找到了、来更改背景和边框的颜色,但没有找到文本的颜色。

  • 问题内容: 是的,语言规范定义结果为“ 2”。如果VM采取不同的方式,则不符合规范。 大多数编译器都会对此抱怨。以Eclipse为例,它将声称永远不会执行return块,但这是错误的。 编写这样的代码我需要知道如何执行此操作: 假设:我有这样的代码: 我想改变的颜色并以颜色为蓝色颜色绿色 M到红色的数字橙色 如何更改此文字的颜色?这些文本来自记事本,也可以直接在文本区域中键入。是非常糟糕的做法,永