Как пометить значок справа от элемента предпочтения в PreferenceActivity?

Пожалуйста, нажмите, чтобы увидеть изображение http://i1094.photobucket.com/albums/i455/tdounnyy/device.png

В нижней части этой функции PreferenceActivity "Выбор мелодии звонка" имеется значок / кнопка с правой стороны.

А "Вибрировать" нет.

Это Вибрационное Предпочтение является одним из предпочтений, которое расширяет Предпочтения.

Я хочу поместить тот же значок в строке вибрации. Одним из способов является расширение ListPreference или RingtonePreference для обмана ОС.

Мне не нравится, интересно, есть ли лучшее решение. ^_^

Предпочтения.xml Спасибо @Femi

     Licensed under the Apache License, Version 2.0 (the "License");
     you may not use this file except in compliance with the License.
     You may obtain a copy of the License at

          http://www.apache.org/licenses/LICENSE-2.0

     Unless required by applicable law or agreed to in writing, software
     distributed under the License is distributed on an "AS IS" BASIS,
     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     See the License for the specific language governing permissions and
     limitations under the License.
-->

<!-- Layout used by PreferenceScreen. This is inflated inside 
        android.R.layout.preference. -->
<ImageView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginRight="4dip"
    android:layout_gravity="center_vertical"
    android:background="@drawable/btn_circle"
    android:src="@drawable/ic_btn_round_more" />

Я добавил префикс "android" как:

android:background="@android:drawable/btn_circle"
android:src="@android:drawable/ic_btn_round_more" />

Теперь Eclipse говорит: Ошибка: ресурс не является общедоступным. Я погуглил, но не повезло. Есть мысли как прорваться?

2 ответа

Решение

Когда вы создаете свой XML-файл настроек, вы можете указать собственный макет для настроек и поместить в него значок. Самый простой способ сделать это - посмотреть в папке Android SDK: platform /data//res/layout/ (я верю в это) содержит фактические файлы макетов, используемые для различных типов предпочтений: вы, вероятно, можете скопировать один из них из там и используйте это в качестве основы вашего собственного предпочтения.

внутри вашего предпочтения.xml

      android:widgetLayout="@layout/layout_contain_imageview"

или в .java

       setWidgetLayoutResource(R.layout.layout_contain_imageview);

пример для layout_contain_imageview.xml

      <?xml version="1.0" encoding="utf-8"?>
<ImageView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/ivIcon"
    android:layout_width="32dp"
    android:layout_height="32dp"
    android:src="@drawable/round_app_settings_alt_white_36"
    app:tint="@color/icon_tint"/>

когда вы хотите изменить значок во время выполнения

      @Override
    public void onBindViewHolder(@NonNull PreferenceViewHolder holder) {
        super.onBindViewHolder(holder);
        ImageView ivIcon = (ImageView) holder.findViewById(R.id.ivIcon);
        ivIcon.setImageResource(R.drawable.round_get_app_white_36);
    }
Другие вопросы по тегам