是否可以将PreferenceFragment自动向下滚动到所需的(设置)条目?

时间:2013-12-05 18:03:08

标签: android android-fragments android-preferences

我正在使用startActivity(new Intent(this, SettingsActivity.class))中的Activity来调用我的应用的PreferenceFragment,当需要在首选项中执行某些用户交互时。 我认为向下滚动以达到所涉及的偏好会很好。

我找到了有关如何将视图滚动到ScrollViewListView s的解决方案,但没有任何与PreferenceFragment s相关的内容。

我的偏好如下:

public class SettingsActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        // ...

        PreferenceManager.setDefaultValues(this, R.xml.settings, false);

        getFragmentManager().beginTransaction()
            .replace(android.R.id.content, new SettingsFragment())
            .commit();
    }

    public static class SettingsFragment extends PreferenceFragment implements OnSharedPreferenceChangeListener {

        //preferences:
        private Preference p
        // [...]

        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            addPreferencesFromResource(R.xml.settings);

            //preference click listeners...
            p = (Preference) findPreference("PR_NAME");
            p.setOnPreferenceClickListener(new OnPreferenceClickListener() {

                public boolean onPreferenceClick(Preference preference) {
                    // ...
                    return true;
                }
            });
            // [...]
        }
    }
}

感谢您的任何建议

2 个答案:

答案 0 :(得分:2)

要在PreferenceScreen(设置/首选项)中滚动,请将此功能用于Android API 24.1。+或与androidX API

一起使用
public void scrollToPreference (String key)

答案 1 :(得分:1)

是的,它是可能的,但它是hacky所以也不推荐。它假设Preferences由具有id == android.R.id.list的ListView支持,因此当您引用该ListView时,您可以调用setSelection(position)