可以在XML布局中访问首选项吗?

时间:2010-11-18 03:24:39

标签: android android-layout

我正在努力为我的应用程序实现一些简单的首选项,我试图弄清楚如何使用首选项来操作XML文件中定义的视图。我有一个List,每行使用以下LinearLayout(player_row.xml):

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:orientation="horizontal"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent">
  <ImageView android:id="@+id/player_icon"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:layout_gravity="center"/>
  <TextView android:id="@+id/player_name"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:textSize="30sp"
   android:textColor="#F0F0F0"
   android:layout_weight="1"
   android:layout_marginLeft="5dp"/>
  <TextView android:id="@+id/player_score"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:textSize="30sp"
   android:textColor="#F0F0F0"/>
</LinearLayout>

现在我手动指定textSize属性。我想创建一个首选项菜单,让用户从多个选项中选择,例如“小”,“中”和“大”。我想我应该能够为条目和字体大小设置数组,然后在player_row.xml中引用它,但我似乎无法做到。

的preferences.xml:

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
   android:key="preference_main">
   <ListPreference
      android:key="fontSizePreference"
      android:title="Font size"
      android:entries="@array/fontSizeList"
      android:entryValues="@array/fontSizeList_Values"/>
</PreferenceScreen>

arrays.xml:

<?xml version="1.0" encoding="utf-8"?>
<resources>
  <string-array name="fontSizeList">
    <item>Small</item>
    <item>Medium</item>
    <item>Large</item>
  </string-array>
  <string-array name="fontSizeList_Values">
    <item>22sp</item>
    <item>26sp</item>
    <item>30sp</item>
  </string-array>
</resources>

如果无法做到这一点,使用首选项配置布局的适当方法是什么?我的搜索使我找到了以编程方式访问首选项的多种资源,但这似乎都不是配置XML文件中定义的布局的合适方法。

1 个答案:

答案 0 :(得分:1)

我认为您正在寻找的程序是:

  1. 创建设置屏幕&amp;活性
  2. 用户保存设置后,让您的支持PreferenceActivity将设置保存到文件中(使用getPreferences(MODE_PRIVATE).edit().putString(PREF_FONT_SIZE, yourSetting).commit()
  3. 在您的主要活动#onCreate中,使用setContentView
  4. 加载布局
  5. 同时加载您的偏好
  6. 通过findViewById获取视图,并设置从首选项
  7. 加载的字体大小