通过调用
来激活偏好活动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)一样。为什么会这样,我怎么能删除这些图标,因为它们看起来无关紧要?
答案 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;。