set custom font for text in PreferenceScreen

后端 未结 4 824
独厮守ぢ
独厮守ぢ 2020-12-15 00:08

My PreferenceActivity looks like:

import android.os.Build;
import android.os.Bundle;
import android.preference.PreferenceActivity;
import android.preference.         


        
4条回答
  •  离开以前
    2020-12-15 00:55

    public class CustomPreference extends Preference 
        implements PreferenceStyle {
    
        private int style;
    
        public CustomPreference(Context context, AttributeSet attrs, int defStyle) {
            super(context, attrs, defStyle);
    
        }
    
        public CustomPreference(Context context, AttributeSet attrs) {
            super(context, attrs);
        }
    
        public CustomPreference(Context context) {
            super(context);
        }
    
        @Override
        protected void onBindView(View view) {
            super.onBindView(view);
            switch (style) {
            case STYLE_ALARMED:
                setStyleAlarmed(view);
                break;
            case STYLE_NORMAL:
                setStyleNormal(view);
                break;
            case STYLE_WARNING:
                setStyleWarning(view);
                break;
            case STYLE_SUMMARY_ALARM:
                setStyleSummaryAlarm(view);
                break;
            case STYLE_SUMMARY_WARNING:
                setStyleSummaryWarning(view);
                break;
            case STYLE_DISABLED:
                setStyleDisabled(view);
                break;
            default:
                break;
            }
    
        }
    
    private void setStyleWarning(View view) {
        TextView titleView = (TextView) view.findViewById(android.R.id.title);
        titleView.setTextColor(Color.YELLOW);
                // add your FONT here
    }
    
    private void setStyleAlarmed(View view) {
        int alarmREDColor = view.getContext().getResources().getColor(R.color.alarmed_red);
        TextView titleView = (TextView) view.findViewById(android.R.id.title);
        titleView.setTextColor(alarmREDColor);
    }
    
    public void setStyle(int style) {
            switch (style) {
            case STYLE_ALARMED:
                this.style = STYLE_ALARMED;
                break;
            case STYLE_NORMAL:
                this.style = STYLE_NORMAL;
                break;
            default:
                this.style = STYLE_NORMAL;
            }
        }
    
    public interface PreferenceStyle {
    
        public static final int STYLE_DISABLED = 0;
        public static final int STYLE_NORMAL = 10;
        public static final int STYLE_ALARMED = 20;
        public static final int STYLE_WARNING = 30;
    
        public static final int STYLE_SUMMARY_ALARM = 40;
        public static final int STYLE_SUMMARY_WARNING = 50;
    
        public void setStyle(int style);
        public Context getContext();
        public void setSummary(CharSequence summary);
    
    }
    

    public class YourActivity extends PreferenceActivity {
    
        private CustomPreference pref1;
        private CustomPreference pref2;
        private CustomPreference pref3;
    
    
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);         
            addPreferencesFromResource(R.xml.prefence_xml);
            pref1 = findPreference();
                        pref1.setOnPreferenceClickListener(this);
                        pref1.setStyle(PreferenceStyle.STYLE_NORMAL);
                   }
            }
    

    
    
    
        
    
              
    
            
    
        
    
    
    

提交回复
热议问题