以编程方式更改PreferenceActivity中的所有视图文本颜色

时间:2019-06-16 06:22:12

标签: android

我想在SwitchPreference状态更改时更改PreferenceActivity所有视图的文本颜色。

prefs.xml

ICollection

PrefsActivity.java

    $DIMENSIONES DEL PROBLEMA
    DIMENSIONES :  NPNOD= 27 ,      NELEM= 8 ,     NMATS= 1 ,     \
               NNODE= 8 ,      NDIME= 3 ,                         \ 
               NCARG= 1 , NGDLN= 3, NPROP= 5, \
               NGAUS= 1 , NTIPO= 1 , IWRIT= 1 ,\
               INDSO= 10 , NPRES= 9
    $---------------------------------------------------------
    GEOMETRIA 
    $ CONECTIVIDADES ELEMENTALES
    $ ELEM. MATER.    SECUENCIA DE CONECTIVIDADES
  1 1 8 6 12 20 18 15 23 25
  2 1 19 8 20 24 26 18 25 27
  3 1 5 2 6 8 14 11 15 18
  4 1 17 5 8 19 21 14 18 26
  5 1 7 4 9 13 8 6 12 20
  6 1 16 7 13 22 19 8 20 24
  7 1 3 1 4 7 5 2 6 8
  8 1 10 3 7 16 17 5 8 19

} }

我可以这样更改布局的backgroundColor:

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
    <PreferenceCategory
      android:summary="Settings"
      android:title="Settings" >

        <SwitchPreference
          android:key="NightMode"
          android:summary="dark and light"
          android:title="Night Mode" />

...

    </PreferenceCategory>
</PreferenceScreen>

但是如何更改文本颜色?

1 个答案:

答案 0 :(得分:1)

更改文本颜色的方法是调用textviewinstance.setTextColor(color)。不过,您需要对每个视图进行独立操作。

执行此操作的最佳方法是使用android主题系统。如果您在调用setContentView之前设置了主题,则所有这些视图都将使用该主题创建。使用所需的夜间模式文本颜色作为主题。选择夜间模式后,请调用recreate()终止您的活动并开始新的活动,就像配置更改时发生的情况一样。然后在新实例的onCreate中,检查夜间模式是否打开,并在通过调用setTheme(theme)设置内容视图之前选择您的主题。