My PreferenceActivity looks like:
import android.os.Build;
import android.os.Bundle;
import android.preference.PreferenceActivity;
import android.preference.PreferenceFragment;
import android.widget.TextView;
public class Settings extends PreferenceActivity {
@SuppressWarnings("deprecation")
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
//setContentView(R.layout.about);
Typeface timesFont = Typeface.createFromAsset(getAssets(), "fonts/times.ttf");
TextView about_txt = (TextView) findViewById(R.id.about_txt);
about_txt.setTypeface(timesFont);
about_txt.setText(R.string.about_txt);
if (Build.VERSION.SDK_INT<Build.VERSION_CODES.HONEYCOMB)
{
addPreferencesFromResource(R.xml.preferences);
} else {
// Display the fragment as the main content.
getFragmentManager().beginTransaction().replace(android.R.id.content,
new PrefsFragment()).commit();
}
}
public static class PrefsFragment extends PreferenceFragment
{
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Load the preferences from an XML resource
addPreferencesFromResource(R.xml.preferences);
}
}
}
And preference.xml
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<ListPreference
android:dialogTitle="@string/size_dialog"
android:entries="@array/size_list"
android:entryValues="@array/entry_size"
android:key="size_list"
android:summary="@string/size_summary"
android:title="@string/pref4title"
/>
</PreferenceCategory>
<PreferenceCategory
android:title="@string/pref_about"
android:layout="@layout/about"
>
</PreferenceCategory>
</PreferenceScreen>
@layout/about (about.xml):
<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="match_parent">
<TextView
android:id="@+id/about_txt"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="some text here"
/>
</LinearLayout>
I have specific language, so for text in about.xml I should use specific font. Regularly for TextView I use:
Typeface timesFont = Typeface.createFromAsset(getAssets(), "fonts/times.ttf");
TextView about_txt = (TextView) findViewById(R.id.about_txt);
about_txt.setTypeface(timesFont);
about_txt.setText(R.string.about_txt);
but what I should use to access to text in about.xml which add to prefernce screen ?
Thanks in advance!
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);
}
}
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >
<PreferenceCategory
android:title="category1">
<com.project.main.preference.CustomPreference
android:key="key"
android:title="title"
/>
<com.project.main.preference.CustomPreference
android:key="key"
android:title="title"/>
</PreferenceCategory>
</PreferenceScreen>