通过Android首选项更改活动的字体大小

时间:2015-03-18 23:51:18

标签: android xml sharedpreferences

我有一个问题,我正在尝试根据共享偏好设置中的用户选择调整字体大小,我使用以下颜色完成了背景颜色:

 <ListPreference 
         android:summary="@string/main_bg_list_pref_summary"
         android:title="@string/main_bg_list_pref_title" 
         android:key="main_view_bg_list_pref"
         android:entries="@array/color_names"
         android:entryValues="@array/color_values"
         android:defaultValue="white"/>

数组看起来像这样:

<resources>
    <string-array name="color_names">
        <item name="red">Red</item>
        <item name="green">Green</item>
        <item name="blue">Blue</item>
        <item name="grey">Grey</item>
        <item name="white">White</item>
        <item name="black">Black</item>
    </string-array>
    <string-array name="color_values">
        <item name="red">#990000</item>
        <item name="green">#009900</item>
        <item name="blue">#000099</item>
        <item name="grey">#CCCCCC</item>
        <item name="white">#FFFFFF</item>
        <item name="black">#000000</item>
    </string-array>
</resources>

在我的活动页面上,我有以下代码:

View linearLayout;
SharedPreferences prefs; 
prefs = PreferenceManager.getDefaultSharedPreferences(this);
prefs.registerOnSharedPreferenceChangeListener(this);  

        linearLayout= findViewById(R.id.main_layout);
        String bg = prefs.getString("main_view_bg_list_pref", "#FFFFFF");

        linearLayout.setBackgroundColor(Color.parseColor(bg));

我的布局文件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" 
    android:background="#FFF"
    android:gravity="center"
    android:id="@+id/main_layout">"

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/mainscreen_title" 
        android:textSize="25sp"
        android:textColor="#000"
        android:gravity="center"/>

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/main_prompt"
        android:textSize="15sp"
        android:layout_marginTop="20dp"
        android:gravity="center"
        android:textColor="#000"
    />

    <Button
        android:id="@+id/post_review"
        android:layout_width="200dp"
        android:layout_height="60dp"
        android:layout_marginTop="20dp"
        android:text="@string/post_review_txt"
        android:textSize="15sp"
        android:textColor="#FFFFFF"
        android:background="@drawable/buttonshape"
         />

    <Button
        android:id="@+id/view_reviews"
        android:layout_width="200dp"
        android:layout_height="60dp"
        android:layout_marginTop="20dp"
        android:text="@string/view_review_txt"
        android:textSize="15sp"
        android:textColor="#FFFFFF"
        android:background="@drawable/buttonshape"
         />

    <Button
        android:id="@+id/add_category"
        android:layout_width="200dp"
        android:layout_height="60dp"
        android:layout_marginTop="20dp"
        android:text="@string/add_category_txt"
        android:textSize="15sp"
        android:textColor="#FFFFFF"
        android:background="@drawable/buttonshape"
         />

    <Button
        android:id="@+id/view_remote_categories"
        android:layout_width="200dp"
        android:layout_height="60dp"
        android:layout_marginTop="20dp"
        android:text="@string/view_remote_categories_txt"
        android:textSize="15sp"
        android:textColor="#FFFFFF"
        android:background="@drawable/buttonshape"
         />

</LinearLayout>

我试图用特定TextView的字体大小来做同样的事情,但因为没有像设置背景颜色那样的方法,我不确定这是如何工作的,到目前为止我有这个:

 <ListPreference 
         android:summary="@string/main_font_summary"
         android:title="@string/main_font_title" 
         android:key="main_font_pref"
         android:entries="@array/font_names"
         android:entryValues="@array/font_values"
         android:defaultValue="15sp"/>

数组:

   <string-array name="font_names">
        <item name="large">Large Font</item>
        <item name="medium">Medium Font</item>
        <item name="small">Small Font</item>
    </string-array>
    <string-array name="font_values">
        <item name="large">20sp</item>
        <item name="medium">15sp</item>
        <item name="small">10sp</item>
    </string-array>

是否有某种方法可以某种方式定位textview ID并通过prefs更改此内容?

0 个答案:

没有答案