在首选项之前添加图标

时间:2010-10-28 14:55:08

标签: android

我正在做一个Android应用程序。我想在偏好之前添加图标。我想在内部首选项屏幕的标题之前添加图标,checkboxpreference,...像icon | title 谢谢您的帮助。 像那张照片:

Top Android App: Quick Settings Dialogue View

4 个答案:

答案 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个补丁,图标会将透明部分拉伸到单元格的右端,将图标放在左侧。

对于您的问题,这是一个非常干净的解决方案。