始终显示PreferenceScreen的滚动条

时间:2010-12-02 17:35:33

标签: android scrollbars preferenceactivity preferencescreen

我已使用preferences.xml和PreferenceActivity在我的应用中定义了首选项。这些设置以类似ScrollView的方式显示在手机中。我想一直显示垂直滚动条。在Android 1.6中,它们不会逐渐消失,但在Android 2.2中,它会在大约一秒后逐渐消失。在ScrollView中,我可以使用android:scrollbarAlwaysDrawVerticalTrack或android:scrollbarDefaultDelayBeforeFade来控制它。如何使用首选项小部件执行此操作?

/ P

5 个答案:

答案 0 :(得分:2)

这适用于我的Android 2.3.3。

public class MyPreferenceActivity extends PreferenceActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        getListView().setScrollbarFadingEnabled(false);
        ...
    }
    ...
}

答案 1 :(得分:1)

尝试这个,因为当我想为TextView执行此操作时,上述建议对我不起作用:

TextView.setScrollbarFadingEnabled(false);

答案 2 :(得分:0)

android:scrollbarAlwaysDrawVerticalTrack="true"中尝试PreferenceScreen

答案 3 :(得分:0)

嘿,这是一个非常难看的解决方案,但它的简短而且有效。

public class PreferenceActivity extends Activity {
//Sorry for stupid variable names, couldn't be bothered to be smart
    private ScrollView svOptions;
    private Runnable _run_sb_on;
    private final Handler _handle_sb_on = new Handler(); 

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.preference);

        svOptions = (ScrollView) findViewById(R.id.svOptions);
        _run_sb_on = new Runnable() { //i hate you google for making me write crap code ! 
            public void run() {
                svOptions.fling(0); //don't move it, just keep it alive
                _handle_sb_on.postDelayed(this, 300); //300 is the timeout of the fader 
            }
        }; 
        _handle_sb_on.post(_run_sb_on);
    }

    //  etc

}

所以你有它。请注意,投掷可以吃触摸事件,它很少但有点烦人 - 但可行。

答案 4 :(得分:0)

将它放在要始终显示滚动条的滚动条中:

android:scrollbarFadeDuration="0"

违反直觉,我知道,但它完美无缺。