Настройки 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

Другие вопросы по тегам