Intereting Posts
Надежны ли потоки для подсчета секунд? Количество сетевых подключений в Android Определение требований к питанию для бесконтактной смарт-карты на Java. Панель инструментов Android не отображает пользовательские возможности Socialauth android ResourceNotFound Когда фрагмент потерял фокус, а затем восстановил фокус, почему его метод onResume () никогда не вызывается в этот период? Android: как получить номер телефона от входящего SMS? Android Asyntask: используйте слабую ссылку для контекста, чтобы избежать поворота экрана устройства Как отправить электронную почту с вложением с помощью GmailSender в android Не удалось обновить проект «Колебание». Android Studio Android – Как подключить WebView к активности после создания его с помощью контекста приложения SecurityException: отказ от разрешения: открытие провайдера Почему приложение с простой телефонной записью использует мобильный план данных? Нулевые поля SQLite Data занимают дополнительную память? Как определить версию Gradle?

Использование значков в настройках Android

Я хотел бы, чтобы некоторые из моих предпочтений имели значки, такие как приложение «Настройки».

Я предполагаю, что одним из способов сделать это было бы скопировать весь соответствующий код и ресурсы из приложения «Настройки», но, похоже, он переполняет пару значков.

Также мне не нравится идея дублировать код и ресурсы в каждом проекте, для которого требуются значки настроек.

Кто-нибудь решил это уже с помощью простого или ресурсосберегающего подхода?

Приложение «Настройки» использует частный пользовательский подкласс PreferenceScreen чтобы иметь значок – IconPreferenceScreen . Это 51 строка кода, включая комментарии, хотя для этого также требуются некоторые пользовательские атрибуты. Самый простой вариант – клонировать все это в ваш проект, даже если вам это не нравится.

исходный код

Начиная с уровня API 11 вы можете добавить значок в настройки:

http://developer.android.com/reference/android/preference/Preference.html#setIcon%28int%29

http://developer.android.com/reference/android/preference/Preference.html#attr_android:icon

Для более старых версий Android вы должны использовать пользовательские макеты и связывать изображения в коде, как предлагает @ roger-l.

Обновлено …. ответил и работал

Используйте пользовательский макет для настройки значка

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+android:id/widget_frame" android:layout_width="fill_parent" android:layout_height="wrap_content" android:minHeight="?android:attr/listPreferredItemHeight" android:gravity="center_vertical" android:paddingRight="?android:attr/scrollbarSize"> <ImageView android:id="@+id/icon" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="6dip" android:layout_marginRight="6dip" android:layout_gravity="center" /> <RelativeLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="2dip" android:layout_marginRight="6dip" android:layout_marginTop="6dip" android:layout_marginBottom="6dip" android:layout_weight="1"> <TextView android:id="@+android:id/title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:singleLine="true" android:textAppearance="?android:attr/textAppearanceLarge" 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_alignLeft="@android:id/title" android:textAppearance="?android:attr/textAppearanceSmall" android:maxLines="2" /> </RelativeLayout> </LinearLayout> 

И импортированный класс для IconPreferenceScreen

 public class IconPreferenceScreen extends Preference { private final Drawable mIcon; private static String mType; public IconPreferenceScreen(Context context, AttributeSet attrs, int iconRes) { this(context, attrs, 0, iconRes); } public IconPreferenceScreen(Context context, AttributeSet attrs, int defStyle, int iconRes) { super(context, attrs, defStyle); setLayoutResource(R.layout.preference_icon); mIcon = context.getResources().getDrawable(iconRes); } public IconPreferenceScreen(Context context, int iconRes) { this(context, null, iconRes); } @Override public void onBindView(View view) { super.onBindView(view); ImageView imageView = (ImageView) view.findViewById(R.id.icon); if (imageView != null && mIcon != null) { imageView.setImageDrawable(mIcon); } } } 

То вы можете просто использовать новый IconPreferenceScreen вместо Предпочтения и добавить значок

Android 3.x Honeycomb показывает значки, определенные в стандартных настройках.

Вероятно, использование значка зависит от версии ОС Android или размера экрана.