7

Androidアプリの設定画面の外観を暗いテキストの色に変更したい。これどうやってするの?(私はすでに背景を白い色に変更しました)

4

2 に答える 2

15

を拡張するアクティビティを使用すると仮定しますPreferenceActivity。メソッドを使用し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> 

その後、Activity に設定します。

setTheme(R.style.Theme_DarkText);
于 2011-04-07T11:20:57.893 に答える
0

ウディニッチのアイデアを取り入れましたが、少し改善しました。ビューをインフレートするときだけでなく、いつでも (この場合) 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の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);
        }
    }

これがアイデアです。これは、どの設定でも、いつでも行うことができます。このコードを使用する前に、レイアウトが完全に読み込まれている必要があります。そうしないと、getListView().getCount() が 0 を返すためです。起動時にそれを行いたい場合は、onWindowFocusChanged メソッドで行うことをお勧めします。

于 2012-12-19T14:24:46.757 に答える