我有一个小问题。我想在我的应用程序中启用/禁用一些首选项,具体取决于我的应用程序的TRIAL / PRO版本。
当我禁用某些Preference并且它变灰时,我想添加一些图标或资源来通知用户这是PRO功能。
例如,我想看看我的偏好(非常简单的丑陋示例,但我在30秒内完成):
如何做这样的事情?
非常感谢!
答案 0 :(得分:1)
您可以使用主题:
在你的清单中:
<!-- 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"
(这是一个包含drawable的布局)
答案 1 :(得分:0)
您可以为列表项目设置自定义布局,包括文本和图片(如您所示),并根据应用的版本(试用版或专业版)切换图片的可见性。
以下是创建自定义列表视图的示例
http://www.vogella.com/articles/AndroidListView/article.html