Android:如何删除EditTextPreference条目旁边的向下箭头图标?

时间:2010-09-29 13:32:44

标签: android listpreference

通过调用

来激活偏好活动
  

addPreferencesFromResource(R.xml.preferences);

以下是preferences.xml:

<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 个答案:

答案 0 :(得分:4)

如果您不想要首选项中的箭头,请使用 -

**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"
/>

答案 1 :(得分:0)

箭头是为了让您知道点击该偏好会将您带到其他地方。在ListPreference的情况下,它表示在EditTextPreference的情况下它转到另一个“屏幕”,它表示它将弹出一个对话框。如果您不喜欢它,您可以为它创建一个新的样式并使用它。

答案 2 :(得分:0)

我不是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);
    }

}}

答案 3 :(得分:0)

如果有人遇到同样的问题,我发现了一个超级简单的解决方案,可以摆脱优先项目上的箭头(从技术上讲,它可以摆脱那里出现的任何东西 - 箭头图像复选框等。 )。在您的preferences.xml中,将窗口小部件布局的值设置为&#34; @ null&#34;。