我正在做一个Android应用程序。我想在偏好之前添加图标。我想在内部首选项屏幕的标题之前添加图标,checkboxpreference,...像icon | title 谢谢您的帮助。 像那张照片:
答案 0 :(得分:4)
我不确定我是否理解正确的问题...以下代码对我有用,我希望它有所帮助。
<Preference
android:key="@string/pref_style_key"
android:icon="@drawable/icon"
android:title="@string/pref_style" />
答案 1 :(得分:0)
使用开箱即用的PreferenceActivity
(这是我假设您正在使用的)是不可能的。我认为您需要为此编写自己的活动,并手动获取/设置各种首选项。
获取/设置首选项并不像第一次听起来那么难:
// To get a preference (boolean in this example)
PreferenceManager
.getDefaultSharedPreferences(this)
.getBoolean("someBoolean", false);
// To set that same boolean preference to true
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
Editor editor = prefs.edit();
editor.putBoolean("someBoolean", true);
editor.commit();
您需要确定何时要保存更改的首选项。我建议您进行onPause
活动。
答案 2 :(得分:0)
它不支持开箱即用,你必须扩展Preference
¹类并编写自己的首选项UI类型。但是你可以看看Android设置here的Googles实现。这样做并不多。
¹“表示由PreferenceActivity显示的基本Preference UI构建块”。
答案 3 :(得分:0)
实现目标的最佳和最简单的方法是将图标设为9个补丁图标,右边框作为可伸缩区域。
假设您有一个EditTextPreference,您希望在标题和摘要之前添加一个图标。
创建一个MyEditTextPreference类,它扩展EditTextPreference并覆盖getView方法,将9-patch图标添加为后台资源。
以下是一个有效的示例代码:
public class MyEditTextPreference extends EditTextPreference {
public MyEditTextPreference(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
public View getView(View convertView, ViewGroup parent) {
View view = super.getView(convertView, parent);
view.setBackgroundResource(R.drawable.my_icon);
return view;
}
}
由于图标是9个补丁,图标会将透明部分拉伸到单元格的右端,将图标放在左侧。
对于您的问题,这是一个非常干净的解决方案。