Настройки Android - установить собственный фон?
У меня небольшая проблема. Я хотел бы включить / отключить некоторые настройки в моем приложении в зависимости от TRIAL/PRO версии моего приложения.
и когда я отключаю некоторые предпочтения, и они отображаются серым цветом, я хотел бы добавить к ним значок или ресурс, чтобы уведомить пользователя о том, что это функция PRO.
Например, я хочу, чтобы мои предпочтения выглядели так (очень простой уродливый пример, но я сделал это за 30 секунд):
Как сделать что-то подобное?
Большое спасибо!
2 ответа
Вы можете использовать тему:
В тебе проявляется:
<!-- Let Preferences have their own theme -->
<activity
android:name="com.example.app.ACTIVITY_Prefs"
android:theme="@style/Theme.APP.Prefs"
/>
Затем вы должны создать эту тему под названием APP.Prefs
[РЕДАКТИРОВАТЬ]
Чтобы задать предпочтения собственной раскладке:
В папке res/layout поместите новый макет (не стесняйтесь вносить изменения).
Я назвал мой prefs.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:baselineAligned="false"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="?android:attr/listPreferredItemHeight"
android:gravity="center_vertical"
android:paddingStart="16dp"
android:paddingEnd="?android:attr/scrollbarSize"
>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:minWidth="16dp"
android:gravity="center"
android:orientation="horizontal"
>
<ImageView
android:id="@+android:id/icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
/>
</LinearLayout>
<RelativeLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginEnd="8dp"
android:layout_marginTop="8dp"
android:layout_marginBottom="8dp"
android:layout_weight="1"
>
<TextView
android:id="@+android:id/displayTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:singleLine="true"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textStyle="bold"
android:ellipsize="marquee"
android:fadingEdge="horizontal"
/>
<TextView
android:id="@+android:id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:singleLine="true"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textStyle="bold"
android:ellipsize="marquee"
android:fadingEdge="horizontal"
/>
<TextView
android:id="@+android:id/summary"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@android:id/title"
android:layout_alignStart="@android:id/title"
android:textAppearance="?android:attr/textAppearanceSmall"
android:textColor="?android:attr/textColorSecondary"
android:shadowColor="@color/white"
android:shadowDx="1"
android:shadowDy="1"
android:shadowRadius="1"
android:maxLines="4"
/>
</RelativeLayout>
<!-- Preference should place its actual preference widget here. -->
<LinearLayout
android:id="@+android:id/widget_frame"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:minWidth="48dp"
android:gravity="center"
android:orientation="vertical"
/>
</LinearLayout>
Обратите внимание, что я использую свои собственные цвета, определенные в res/values /colors.xml
Теперь в вашем файле настроек (у меня это res/xml/prefs.xml):
Каждому предпочтению, которое вы хотите настроить, должен быть назначен этот макет (или какой-то другой, если, скажем, вы хотите разные цвета для каждого типа предпочтений или около того)
android:layout="@layout/prefs"
Если вы хотите изменить значок виджета (или назначить отсутствующий):
android:widgetLayout="@layout/arr_dn"
(Это макет, который содержит рисование)
Вы можете иметь собственный макет для элементов списка, с текстом и изображением (как вы показали), и в зависимости от версии (пробная или профессиональная) приложения, переключать видимость изображения.
Вот пример для создания пользовательского представления списка
http://www.vogella.com/articles/AndroidListView/article.html