Search code examples
androidandroid-preferences

How to add a button to PreferenceScreen


Is there any way to add a button to the bottom of preferences screen and make them work correct when scrolling?


Solution

  • There is another solution for customizing the appearance of the preferences.

    Design a normal XML layout with buttons or whatever you want to add to the standard preferences. Include a ListView in your layout and give it the ID @android:id/list.

    Let's say we call the layout file res/layout/main.xml. It could look something like this:

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
                  android:layout_width="match_parent"
                  android:layout_height="match_parent"
                  android:orientation="vertical">
        <Button android:text="This is a button on top of all preferences."
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" />
        <ListView android:id="@android:id/list"
                  android:layout_width="match_parent"
                  android:layout_height="wrap_content" />
    </LinearLayout>
    

    In your PreferenceActivity, add these two lines to your onCreate:

    addPreferencesFromResource(R.xml.preferences);
    setContentView(R.layout.main);
    

    The ListView in your layout will then be replaced by the preferences defined the usual way in res/xml/preferences.xml.