java - SwitchPreference 默认颜色

标签 java android xml

我正在处理的应用程序我已将主色/深色/强调色设置为我想要的颜色,并且它们出现在正确的位置(如预期的那样)。不过,我有一个正在使用的偏好 Activity ,我希望我正在使用的 preferenceswitch 的颜色会以强调色呈现。相反,它们以 Material 蓝绿色呈现。我想知道 Lollipop 的这种默认行为,就像在 Kitkat 中一样是蓝色的吗?我什至没有在我的代码或 colors.xml/styles.xml 的任何地方引用 #009688 的颜色。

colors.xml

<resources>
    <color name="primary">#00BCD4</color>
    <color name="primary_dark">#0097A7</color>
    <color name="accent">#FFD740</color>
</resources>

styles.xml

<resources>
    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
        <item name="android:colorPrimary">@color/primary</item>
        <item name="android:colorPrimaryDark">@color/primary_dark</item>
        <item name="android:colorAccent">@color/accent</item>
    </style>
</resources>

有什么想法吗?我会提供更多信息。我在这里看到了一些关于创建自定义内容的内容,但这真的有必要吗?

preferenceActivity.java

public class PreferenceActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        PrefFrag prefFragment = new PrefFrag();
        FragmentManager fragmentManager = getFragmentManager();
        FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
        fragmentTransaction.replace(android.R.id.content, prefFragment);
        fragmentTransaction.commit();
    }
}

最佳答案

当您使用 AppCompat 时,您应该使用每个属性的非前缀版本 - 这确保它们在所有 API 级别上都可用(与 android: 不同,例如仅适用于 API21+):

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="colorPrimary">@color/primary</item>
    <item name="colorPrimaryDark">@color/primary_dark</item>
    <item name="colorAccent">@color/accent</item>
</style>

关于java - SwitchPreference 默认颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30674904/

相关文章:

Java静态字段的使用

android - Google Play 服务 Activity 识别 - 电池使用情况?

具有 3 个 fragment 的 Android 工具栏

java - 在java代码中使用xpath时出错

java - 如何检查 apk 文件是否已安装在我的模拟器中?

Java map.containsKey 不起作用

Android 应用程序崩溃 - 未知原因

java - 如何通过 stAX 或 SAX 从 xml 字符串获取特定事件/属性内容

xml - 将相同标签、不同命名空间视为相同

java - 将java循环转换为JSTL <c :forEach>