Adding a header to a PreferenceActivity

后端 未结 2 1391
[愿得一人]
[愿得一人] 2021-01-11 16:19

So I have found that android PreferenceScreen is not very style-friendly. Is there a semi-simple way to just add a header (say an image) to the preferencescreen before the

相关标签:
2条回答
  • 2021-01-11 17:14

    In my app I do exactly what you are requesting like this:

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        addPreferencesFromResource(R.xml.preferences);
        setContentView(R.layout.preferences_layout);
    }
    

    and in the preferences_layout.xml file:

    <RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_height="fill_parent"
    android:layout_width="fill_parent">
    
    <ImageView
        android:id="@+id/myCustomImageView"
        android:src="@drawable/xmas"
        android:layout_width="fill_parent"
        android:layout_height="50dp"
    />
    <ListView 
        android:id="@android:id/list" 
        android:layout_width="fill_parent" 
        android:layout_height="fill_parent"
        android:layout_below="@+id/myCustomImageView"
    />
    
    </RelativeLayout>
    

    Notice the android:id set on the ListView in the xml Now you have control over the layout of the preferences screen and use the default style for the preferences as long as you use built-in preferences.

    0 讨论(0)
  • 2021-01-11 17:16

    There is a limitation with Mircea approach: you can't remove the title at the top:

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        ...
    

    This results in "requestfeature() must be called before adding content".

    0 讨论(0)
提交回复
热议问题