web-gelistirme-sc.com

Android'de tercih kategorisinin metin rengi nasıl değiştirilir?

TextColor niteliği çalışmıyor. İşte benim XML:

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

Herhangi bir fikir?

24

bu PreferenceCategory sınıfını özelleştirmek kullanın:

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);
    }
}

ve bunu Pref.xml dosyanıza ekleyin: 

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

Çözümlerden biri, PreferenceScreen ..__'niz için bir tema oluşturmaktır.

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

sonra AndroidManifest.xml'nizde:

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

Benim için mükemmel çalıştı.

29
flawyte

Bunu yapmanın kolay bir yolu, preferenceCategory için özel düzeni burada ayarlamaktır:

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

Ardından kodunuzu tercihler_category düzen dosyanızın içine yerleştirin:

<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

Tercih kategorisinin metin rengini değiştirmek için Android Manifest'inizde PreferenceActivity'nıza bir tema ayarlayın ve colorAccent öğesinin bulunduğundan emin olun. Bu renk PreferenceCategory tarafından alınır.

10
Efren

Etrafınızdaki diğer yol, AppTheme , uygulama seviyenizdeki temayı da gösterecektir.

    <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"
    />

Daha fazla özelleştirme ziyareti için v7 Preferences res

Önemli : Kullanıyorum PreferenceFragmentCompat 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;
  }
}

Ve prefs.xml'nizde:

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

Veya bunu answer da kullanabilirsiniz

2
Leebeedev

Aslında, sadece tercih kategorisi metnini colorAccent kullanarak öğrendim. 

Uygulamanız colorAccent stilini kullanmadıysa, styles.xml adresine gidip bulabilirsiniz. 
<item name="colorAccent">@color/colorPrimary</item> ve rengini istediğiniz gibi değiştirin.

2
Putra Purba

Kendi PreferenceTheme öğenizi tanımlayın ve renkleri geçersiz kılın.

<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

Diğer cevapların çoğu davam için işe yaramadı. Bir PreferenceFragmentCompat kullanıyorum ve bunu yapan gerçek kodun olmasını istemedim. Bu yüzden sadece tercih kategorisinin xml dosyasının bir kopyasını yaptım ve textColor alanını değiştirdim. Dosya Apache lisansı Sürüm 2'ye giriyor.

<?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>

Ve bunu Tercih parçası için .xml mizanpaja aktardım:

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