Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Можно ли получить доступ к настройкам в макете XML?

Автор вопроса: ThomasОтветов: 1

Я работаю над внедрением некоторых простых настроек в приложение, которое у меня есть, и пытаюсь понять, как использовать настройку для управления представлением, определенным в файле XML. У меня есть список со следующим 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, но, похоже, у меня не получается.

предпочтения.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>

массивы.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.

androidandroid-layout

Ответы

Ответ 1 · рейтинг 1 · Sebastian Roth

Я думаю, что процедура, которую вы ищете, это:

  1. Создать экран настроек и активность
  2. Как только пользователь сохранит настройки, пусть ваша поддержка PreferenceActivity сохранит настройки в файл (используя getPreferences(MODE_PRIVATE).edit().putString(PREF_FONT_SIZE, yourSetting).commit()
  3. В вашем основном действии#onCreate загрузите макет с помощью setContentView
  4. Загрузите свои настройки туда же
  5. Получите представления через findViewById и установите размер шрифта, поскольку он загружается из настроек.

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы