TextColor属性が機能していません。これが私のXMLです。
<PreferenceCategory
Android:title="Title"
Android:textColor="#00FF00">
何か案は?
このカスタマイズ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" />
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>
それは私にとって完璧に機能しました。
これを行う簡単な方法は、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"/>
設定カテゴリのテキストの色を変更するには、AndroidマニフェストでPreferenceActivity
にテーマを設定し、colorAccentアイテムが存在することを確認します。この色はPreferenceCategory
によって取得されます。
他の方法では、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 。
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
実際、colorAccent
を使用して、その好みのカテゴリテキストを見つけました。
スタイルがcolorAccent
のスタイルを使用していなかった場合は、styles.xml
見つけて<item name="colorAccent">@color/colorPrimary</item>
、および必要に応じて色を変更します。
独自の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>
私の場合、他の多くの答えはうまくいきませんでした。私は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">