如何向PreferenceScreen条目添加图标

时间:2011-03-05 08:57:14

标签: android android-widget

考虑这个preferences.xml文件:

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:title="@string/preference_main">
    <PreferenceScreen
        android:title="@string/preference_sight"
        android:key="category_sight">
        <ListPreference 
            android:summary="@string/preference_sight_wb_msg"
            android:title="@string/preference_sight_wb_title"
            android:key="sight_wb" android:defaultValue="auto"/>
        <Preference
            android:key="sight_wb_values_cache"/>
        <eu.elevelcbt.sm.preferences.PercentBarPreference
            android:title="@string/preference_sight_mean_confidence_min_title"
            android:summary="@string/preference_sight_mean_confidence_min_msg"
            android:key="sight_mean_confidence_min"
            android:defaultValue="80"/>
        <CheckBoxPreference 
            android:key="sight_flash"
            android:defaultValue="false"
            android:summary="@string/preference_sight_flash_msg"
            android:title="@string/preference_sight_flash_title"/>
    </PreferenceScreen>
</PreferenceScreen>

当我在MainPreference类中显示时,PreferenceActivity正确显示了一个第一级菜单,其中包含一个条目“Sight”(@ string / preference_main),当选中该条目时,会将我带到第二个首选项屏幕,其中包含我的所有首选项。一切都按我想要的方式运作。唯一的事情是在第一个首选项屏幕上,我想在标签“Sight”旁边放置一个图标,就像在主Android设置菜单中一样。

我该怎么做?非常感谢您的任何帮助! 卢卡。

矿: Mine

所需: Desired


......嗯我试过但没有运气......

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:title="@string/preference_main">
  <PreferenceScreen
        android:title="@string/preference_sight"
        android:key="category_sight"
        android:icon="@drawable/ic_dialog_light">
...
</PreferenceScreen>

我在哪里做错了?

6 个答案:

答案 0 :(得分:7)

我有另一个建议,适用于我的Nexus 7,运行Android 4.2,以及我的ASUS TF101,运行Android 4.0.3:将icon属性添加到首选项标题中,如下所示:

<?xml version="1.0" encoding="utf-8"?>
<preference-headers xmlns:android="http://schemas.android.com/apk/res/android" >

    <header
        android:fragment="com.example.SettingsFragment"
        android:summary="@string/pref_summary_caching"
        android:icon="@drawable/ic_pref_cache"
        android:title="@string/pref_cat_caching" >
        <extra
            android:name="category"
            android:value="caching" />
    </header>
</preference-headers>

这使图标显示在标题文本的左侧。似乎无处记录,并且您无法通过XML编辑器的Structure屏幕输入值,因为似乎不存在preference-headers文件的XML架构。但是,嘿,它有效!

答案 1 :(得分:5)

答案 2 :(得分:3)

您可以查看设置应用的源代码,看看他们正在扩展Preference来执行此操作。这是类文件。

https://github.com/android/platform_packages_apps_settings/blob/master/src/com/android/settings/IconPreferenceScreen.java

希望这有帮助!

答案 3 :(得分:0)

旧问题,但答案现在在开发者网站上:http://developer.android.com/guide/topics/ui/settings.html#PreferenceHeaders

答案 4 :(得分:0)

只需添加android:icon="@mipmap/icon_launcher 它有效。

示例代码:

<ListPreference
        android:icon="@mipmap/icon_launcher"
        android:title="@string/pref_sort_order_label"
        android:key="@string/pref_sort_order_key"
        android:defaultValue="@string/pref_most_popular"
        android:entries="@array/pref_sort_order"
        android:entryValues="@array/pref_sort_order">
    </ListPreference>

答案 5 :(得分:0)

图标

代表“首选项”图标的Drawable。

示例:app:icon =“ @ drawable / ic_camera”

https://developer.android.com/guide/topics/ui/settings/components-and-attributes?hl=vi