Android: Как убрать значок стрелки вниз рядом с записью EditTextPreference? - PullRequest
1 голос
/ 29 сентября 2010

Активность предпочтений раздувается при вызове

addPreferencesFromResource (R.xml.preferences);

и вот файл предпочтений: x 1007 *

<PreferenceCategory android:title="@string/pref_categ_update_label">
    <ListPreference android:title="@string/pref_label"
        android:key="update_interval" 
        android:entries="@array/update_names" android:entryValues="@array/update_values" />


</PreferenceCategory>


<PreferenceCategory android:title="@string/pref_categ_evernote_label">

    <EditTextPreference android:title="@string/pref_dialog_edit_username"
        android:key="prefUsername" 
        android:positiveButtonText="@string/save_pref"
        android:negativeButtonText="@string/cancel_pref"  />

    <EditTextPreference android:title="@string/pref_dialog_edit_password"
        android:key="prefPassword"  
        android:positiveButtonText="@string/save_pref"
        android:negativeButtonText="@string/cancel_pref"             
        android:password="true" />

</PreferenceCategory>

все выглядит хорошо, но записи EditTextPreference (2 и 3) имеют значки со стрелками вниз, как и ListPreference (1). Почему это так и как я могу удалить эти значки, поскольку они выглядят неактуальными?

Скриншот здесь: http://i.stack.imgur.com/BZUr7.png

Ответы [ 4 ]

4 голосов
/ 22 июня 2012

Если вам не нужны стрелки в настройках, используйте -

**android:widgetLayout="@null"**

А если вы хотите задать какое-то пользовательское изображение в правой части, то используйте -

**android:widgetLayout="@layout/pref_custom_image"**

где pref_custom_image.xml будет выглядеть -

<?xml version="1.0" encoding="utf-8"?>
<ImageView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_launcher"
/>
0 голосов
/ 30 ноября 2011

Я не уверен на 100%, если это безопасный и хороший способ, но вы можете удалить значок, если вы расширите класс EditTextPreference следующим образом:

Перекрыв метод getView(), вы можете изменитьрисуется в списке.Я использую исходный вид и ищу его по всем изображениям (рекурсивно) и меняю их visibility на GONE.

public class EditTextPreferenceNoImage extends EditTextPreference {
public EditTextPreferenceNoImage(Context context, AttributeSet attrs,
        int defStyle) {
    super(context, attrs, defStyle);
}

public EditTextPreferenceNoImage(Context context, AttributeSet attrs) {
    super(context, attrs);
}

public EditTextPreferenceNoImage(Context context) {
    super(context);
}

@Override
public View getView(View convertView, ViewGroup parent) {
    View view = super.getView(convertView, parent);
    changeImagesVisibility(view, View.GONE);
    return view;
}

private void changeImagesVisibility(View view, int visibility) {
    log.debug("child:" + view.getClass());
    if (view instanceof ViewGroup) {
        ViewGroup ll = (ViewGroup) view;
        for (int i = 0; i < ll.getChildCount(); i++) {
            changeImagesVisibilitz(ll.getChildAt(i), visibility);
        }
    } else if (view instanceof ImageView) {
        log.debug("visiblitz : " + (visibility == View.VISIBLE));
        ImageView image = (ImageView) view;
        image.setVisibility(visibility);
    }

}}
0 голосов
/ 04 июня 2012

Если у кого-то есть такая же проблема, я нашел супер простое решение, чтобы избавиться от стрелки на элементах предпочтения (технически, это избавляет от всего, что там появляется - флажок стрелки и т. Д.). В ваших предпочтениях.xml установите для параметра «Виджет» значение «@null».

0 голосов
/ 29 сентября 2010

Стрелки показывают, что нажатие на это предпочтение приведет вас в другое место. В случае ListPreference это указывает на то, что он переходит на другой «экран», в случае EditTextPreference это указывает на то, что он собирается открыть диалоговое окно. Если вам это не нравится, вы можете создать для него новый стиль и использовать его вместо этого.

...