web-dev-qa-db-ja.com

Androidの設定カテゴリのテキストの色を変更するにはどうすればよいですか?

TextColor属性が機能していません。これが私のXMLです。

<PreferenceCategory
        Android:title="Title"
        Android:textColor="#00FF00">

何か案は?

29

このカスタマイズPreferenceCategoryクラスを使用します。

public class MyPreferenceCategory extends PreferenceCategory {
    public MyPreferenceCategory(Context context) {
        super(context);
    }

    public MyPreferenceCategory(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public MyPreferenceCategory(Context context, AttributeSet attrs,
            int defStyle) {
        super(context, attrs, defStyle);
    }

    @Override
    protected void onBindView(View view) {
        super.onBindView(view);
        TextView titleView = (TextView) view.findViewById(Android.R.id.title);
        titleView.setTextColor(Color.RED);
    }
}

これをPref.xmlファイルに追加します。

<ALi.UI.Customize.MyPreferenceCategory Android:title="@string/pref_server" />
53
AliSh

1つの解決策は、PreferenceScreenのテーマを作成することです。そのため、themes.xmlまたはstyles.xmlで(themes.xmlに配置した方がよい):

<style name="PreferenceScreen" parent="YourApplicationThemeOrNone">
    <item name="Android:textColor">@color/yourCategoryTitleColor</item>
</style>

次に、AndroidManifest.xmlで:

<activity
      Android:name="MyPreferenceActivity"
      ...
      Android:theme="@style/PreferenceScreen" >
</activity>

それは私にとって完璧に機能しました。

35
flawyte

これを行う簡単な方法は、preferenceCategoryのカスタムレイアウトをここに設定することです。

<PreferenceCategory
    Android:layout="@layout/preferences_category"
    Android:title="Privacy" >

次に、preferences_categoryレイアウトファイル内にコードを設定します。

<TextView
    Android:id="@Android:id/title"
    Android:textColor="@color/deep_orange_500"
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    Android:textSize="16sp"
    Android:textStyle="bold"
    Android:textAllCaps="true"/>
29
Simon

設定カテゴリのテキストの色を変更するには、AndroidマニフェストでPreferenceActivityにテーマを設定し、colorAccentアイテムが存在することを確認します。この色はPreferenceCategoryによって取得されます。

11
Efren

他の方法では、AppTheme、アプリケーションレベルでテーマに言及します

    <style name="AppBaseTheme" parent="Theme.AppCompat.Light.NoActionBar">
        .....//your other items
        <item name="preferenceTheme">@style/PrefTheme</item>
    </style>

    <style name="PrefTheme" parent="@style/PreferenceThemeOverlay">
        <item name="preferenceCategoryStyle">@style/CategoryStyle</item>
    </style>

    <style name="CategoryStyle" parent="Preference.Category">
        <item name="Android:layout">@layout/pref_category_view</item>
    </style>

[〜#〜] xml [〜#〜]:pref_category_view

<?xml version="1.0" encoding="utf-8"?>
<TextView Android:id="@Android:id/title"
          style="?android:attr/listSeparatorTextViewStyle"
          xmlns:Android="http://schemas.Android.com/apk/res/Android"
          Android:layout_width="match_parent"
          Android:textColor="@color/red"
          Android:layout_height="wrap_content"
    />

詳細なカスタマイズについては、 v7 Preferences res をご覧ください。

重要:私は使用していますPreferenceFragmentCompatfrom lib v7 Preference

3
Bharatesh
public class MyPreferenceCategory extends PreferenceCategory {

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

 @Override
 protected View onCreateView(ViewGroup parent) {
    // It's just a TextView!
 TextView categoryTitle =  (TextView)super.onCreateView(parent);
 categoryTitle.setTextColor(parent.getResources().getColor(R.color.orange));

    return categoryTitle;
  }
}

そして、prefs.xmlで:

<com.your.packagename.MyPreferenceCategory Android:title="General">
.
.
.
</com.your.packagename.MyPreferenceCategory>

または、これを使用することもできます answer

2
Leebeedev

実際、colorAccentを使用して、その好みのカテゴリテキストを見つけました。

スタイルがcolorAccentのスタイルを使用していなかった場合は、styles.xml 見つけて
<item name="colorAccent">@color/colorPrimary</item>、および必要に応じて色を変更します。

2
Putra Purba

独自のPreferenceThemeを定義し、色をオーバーライドします。

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
    <item name="preferenceTheme">@style/AppTheme.PreferenceTheme</item>
</style>

<style name="AppTheme.PreferenceTheme" parent="PreferenceThemeOverlay.v14.Material">
    <item name="colorAccent">`#color_value`</item>
</style>
2
user10320258

私の場合、他の多くの答えはうまくいきませんでした。私はPreferenceFragmentCompatを使用していますが、実際のコードでこれを行いたくありませんでした。そこで、単純に設定カテゴリxmlファイルのコピーを作成し、textColorフィールドを変更しました。このファイルは、Apacheライセンス、バージョン2に基づいています。

<?xml version="1.0" encoding="utf-8"?>

<!--
  ~ Copyright (C) 2015 The Android Open Source Project
  ~
  ~ Licensed under the Apache License, Version 2.0 (the "License");
  ~ you may not use this file except in compliance with the License.
  ~ You may obtain a copy of the License at
  ~
  ~      http://www.Apache.org/licenses/LICENSE-2.0
  ~
  ~ Unless required by applicable law or agreed to in writing, software
  ~ distributed under the License is distributed on an "AS IS" BASIS,
  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  ~ See the License for the specific language governing permissions and
  ~ limitations under the License -->

  <LinearLayout
    xmlns:Android="http://schemas.Android.com/apk/res/Android"
    xmlns:tools="http://schemas.Android.com/tools"
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    Android:layout_marginBottom="8dp"
    Android:layout_marginTop="8dp"
    Android:layout_marginStart="?android:attr/listPreferredItemPaddingLeft"
    Android:orientation="vertical">
    <TextView
      Android:id="@Android:id/title"
      Android:layout_width="match_parent"
      Android:layout_height="wrap_content"
      Android:layout_marginTop="16dp"
      Android:paddingEnd="?android:attr/listPreferredItemPaddingRight"
      Android:textAlignment="viewStart"
      Android:textColor="@color/app_accent"
      Android:textStyle="bold"
      tools:ignore="RtlSymmetry"/>
    <TextView
      Android:id="@Android:id/summary"
      Android:layout_width="wrap_content"
      Android:layout_height="wrap_content"
      Android:ellipsize="end"
      Android:singleLine="true"
      Android:textColor="?android:attr/textColorSecondary"/>
  </LinearLayout>

Preferenceフラグメントの.xmlレイアウトにインポートしました:

 <PreferenceCategory
    Android:layout="@layout/preference_category_companion"
    Android:key="my_preference_title"
    Android:title="@string/my_preference_title">
0
Salladsmannen