更改 PreferenceActivity 文本颜色

发布于 2024-10-31 03:30:26 字数 62 浏览 2 评论 0原文

我想将 Android 应用程序的首选项屏幕的外观更改为深色文本颜色。我该怎么做? (我已经将背景更改为白色)

I want to change the look of my Android app's preference screen to dark text color. How can I do this? (I´ve already changed the background to white color)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

哑剧 2024-11-07 03:30:26

我假设您使用扩展了 PreferenceActivity 的 Activity。您可以使用 setTheme 方法在您的首选项屏幕上设置自定义主题。
只需在 res/values/themes.xml 中定义一个即可。

它看起来像这样:

<?xml version="1.0" encoding="UTF-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android">
  <style name="Theme.DarkText">
    <item name="android:textColor">#000000</item>
  </style>
</resources> 

然后将其设置在您的活动中:

setTheme(R.style.Theme_DarkText);

I assume you use an Activity which extends the PreferenceActivity. You can use the setTheme method to set a custom theme on your preference screen.
Just define one in res/values/themes.xml.

It would look like this:

<?xml version="1.0" encoding="UTF-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android">
  <style name="Theme.DarkText">
    <item name="android:textColor">#000000</item>
  </style>
</resources> 

Afterwards set it in your Activity:

setTheme(R.style.Theme_DarkText);
笑饮青盏花 2024-11-07 03:30:26

我接受了乌迪尼奇的想法,但我对其进行了一些改进。
现在可以随时设置(在本例中)PreferenceCategory 的颜色,而不仅仅是在膨胀视图时。

怎么做?

首先,创建您的自定义类,例如这个类:

import android.content.Context;
import android.preference.PreferenceCategory;
import android.util.AttributeSet;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

public class MyPreferenceCategory extends PreferenceCategory {

private TextView categoryTitle;

public PincardPreferenceCategory(Context context) {
    super(context);
    // TODO Auto-generated constructor stub
}

public PincardPreferenceCategory(Context context, AttributeSet attrs) {
    super(context, attrs);
    // TODO Auto-generated constructor stub
}

public PincardPreferenceCategory(Context context, AttributeSet attrs,
        int defStyle) {
    super(context, attrs, defStyle);
    // TODO Auto-generated constructor stub
}


@Override
protected View onCreateView(ViewGroup parent) {
    categoryTitle =  (TextView)super.onCreateView(parent);
    return categoryTitle;
}


public void setBackgroundColor(int color) {
    categoryTitle.setBackgroundColor(color);
}


public void setTextColor(int color) {
    categoryTitle.setTextColor(color);
}

}

完成后,您必须在 XML 中定义设置时使用它。

在您只需要在您的 java choiceActivity 中使用此循环之后:

    for (int i = 0; i < getListView().getCount(); i++) {
        Object view = getListView().getItemAtPosition(i);
        if (view instanceof PincardPreferenceCategory) {
            ((PincardPreferenceCategory)view).setBackgroundColor(Color.BLUE);
            ((PincardPreferenceCategory)view).setTextColor(Color.RED);
        }
    }

这就是想法。您可以随时对任何设置执行此操作。
在使用此代码之前,布局必须已完全加载,否则 getListView().getCount() 将返回 0。例如,如果您在 onCreate 中使用它,我将无法工作。
如果您想在启动时执行此操作,我建议您在 onWindowFocusChanged 方法中执行此操作。

I took the idea of Udinic, but I improved it a little.
It is now possible to set the color of (in this case) the PreferenceCategory at any time, and not only when inflating the view.

How To do it ?

First, create your customized class such as this one :

import android.content.Context;
import android.preference.PreferenceCategory;
import android.util.AttributeSet;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

public class MyPreferenceCategory extends PreferenceCategory {

private TextView categoryTitle;

public PincardPreferenceCategory(Context context) {
    super(context);
    // TODO Auto-generated constructor stub
}

public PincardPreferenceCategory(Context context, AttributeSet attrs) {
    super(context, attrs);
    // TODO Auto-generated constructor stub
}

public PincardPreferenceCategory(Context context, AttributeSet attrs,
        int defStyle) {
    super(context, attrs, defStyle);
    // TODO Auto-generated constructor stub
}


@Override
protected View onCreateView(ViewGroup parent) {
    categoryTitle =  (TextView)super.onCreateView(parent);
    return categoryTitle;
}


public void setBackgroundColor(int color) {
    categoryTitle.setBackgroundColor(color);
}


public void setTextColor(int color) {
    categoryTitle.setTextColor(color);
}

}

Once it is done, you have to use it while defining your settings in XML.

After you just have to use this loop in your java preferenceActivity :

    for (int i = 0; i < getListView().getCount(); i++) {
        Object view = getListView().getItemAtPosition(i);
        if (view instanceof PincardPreferenceCategory) {
            ((PincardPreferenceCategory)view).setBackgroundColor(Color.BLUE);
            ((PincardPreferenceCategory)view).setTextColor(Color.RED);
        }
    }

Here is the idea. You can do that for any of your settings, and at anytime.
The layout must have been totally loaded before using this code, because otherwise, getListView().getCount() will return 0. I won't work if you use it in onCreate for exemple.
If you want to do that at startup, I suggest you to do that in the onWindowFocusChanged method.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文