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

Android:如何删除EditTextPreference条目旁边的向下箭头图标?,android,listpreference,Android,Listpreference,通过调用 addPreferencesFromResource(R.xml.preferences) 下面是preferences.xml: 看起来一切正常,但EditTextPreference条目(2和3)旁边有向下箭头图标,就像ListPreference(1)一样。为什么会这样?我如何才能删除这些看起来不相关的图标 屏幕截图在这里:箭头在那里,让您知道单击该首选项将带您到其他地方。在列表首选项的情况下,它表示它将转到另一个“屏幕”;在编辑文本首选项的情况下,它表示它将弹出一个对

通过调用

addPreferencesFromResource(R.xml.preferences)

下面是preferences.xml:


看起来一切正常,但EditTextPreference条目(2和3)旁边有向下箭头图标,就像ListPreference(1)一样。为什么会这样?我如何才能删除这些看起来不相关的图标


屏幕截图在这里:

箭头在那里,让您知道单击该首选项将带您到其他地方。在
列表首选项
的情况下,它表示它将转到另一个“屏幕”;在
编辑文本首选项
的情况下,它表示它将弹出一个对话框。如果你不喜欢它,你可以为它创建一个新的样式并使用它。

箭头在那里,让你知道单击该首选项将带你去其他地方。在
列表首选项
的情况下,它表示它将转到另一个“屏幕”;在
编辑文本首选项
的情况下,它表示它将弹出一个对话框。如果你不喜欢它,你可以为它创建一个新的样式并使用它。

我不能100%确定这是否是一个安全的好方法,但是如果你像这样扩展EditTextPreference类,你可以删除图标:

通过覆盖
getView()
方法,可以更改列表中绘制的内容。我正在使用原始视图并搜索所有图像(递归),并将它们的
可见性
更改为
消失

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);
    }

}}
公共类EditTextPreferenceNoImage扩展了EditTextPreference{
public EditTextPreferenceNoImage(上下文、属性集属性、,
int-defStyle){
超级(上下文、属性、定义样式);
}
public EditTextPreferenceNoImage(上下文、属性集属性){
超级(上下文,attrs);
}
公共EditTextPreferenceNoImage(上下文){
超级(上下文);
}
@凌驾
公共视图getView(视图转换视图、视图组父视图){
View=super.getView(convertView,父级);
changeImagesVisibility(视图,视图,消失);
返回视图;
}
私有void changeImagesVisibility(视图、int可见性){
log.debug(“子项:+view.getClass());
if(视图组的视图实例){
视图组ll=(视图组)视图;
for(int i=0;i
我不能100%确定这是否是一种安全且好的方法,但是如果您像这样扩展EditTextPreference类,您可以删除图标:

通过覆盖
getView()
方法,可以更改列表中绘制的内容。我正在使用原始视图并搜索所有图像(递归),并将它们的
可见性
更改为
消失

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);
    }

}}
公共类EditTextPreferenceNoImage扩展了EditTextPreference{
public EditTextPreferenceNoImage(上下文、属性集属性、,
int-defStyle){
超级(上下文、属性、定义样式);
}
public EditTextPreferenceNoImage(上下文、属性集属性){
超级(上下文,attrs);
}
公共EditTextPreferenceNoImage(上下文){
超级(上下文);
}
@凌驾
公共视图getView(视图转换视图、视图组父视图){
View=super.getView(convertView,父级);
changeImagesVisibility(视图,视图,消失);
返回视图;
}
私有void changeImagesVisibility(视图、int可见性){
log.debug(“子项:+view.getClass());
if(视图组的视图实例){
视图组ll=(视图组)视图;
for(int i=0;i
如果有人遇到同样的问题,我找到了一个超级简单的解决方案,可以去掉首选项上的箭头(从技术上讲,它可以去掉任何可能出现的内容--箭头图像复选框等)。在您的preferences.xml中,将Widget Layout的值设置为“@null”。

如果有人有同样的问题,我找到了一个超级简单的解决方案,可以去掉首选项上的箭头(从技术上讲,它可以去掉任何可能出现的内容--箭头图像复选框等)。在您的preferences.xml中,将小部件布局的值设置为“@null”。

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

**android:widgetLayout="@null"**
**android:widgetLayout="@layout/pref_custom_image"**
若你们想给一些自定义图像在右手边,然后使用-

**android:widgetLayout="@null"**
**android:widgetLayout="@layout/pref_custom_image"**
其中,pref\u custom\u 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"
/>

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

**android:widgetLayout="@null"**
**android:widgetLayout="@layout/pref_custom_image"**
若你们想给一些自定义图像在右手边,然后使用-

**android:widgetLayout="@null"**
**android:widgetLayout="@layout/pref_custom_image"**
其中,pref\u custom\u 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"
/>


非常感谢。我认为这些箭头是布局错误)那么实现这一点的最低实现是什么?(我想要相同的功能,不想写整个偏好)非常感谢。我认为这些箭头是布局错误)那么实现这一点的最低实现是什么?(我想要相同的功能,不想写整个偏好我自己)我认为disableImages是modify ChangeImages Visibilitz?所以我编辑了你的帖子你是对的,我简化了这段代码,忘记了更改这个方法calli认为disableImages是modify ChangeImages Visibilitz?所以我编辑了你的帖子你是对的,我简化了这段代码,忘记了更改这个方法调用