OnePreference

Additional

Language
Kotlin
Version
v1.1 (Apr 11, 2017)
Created
Nov 20, 2016
Updated
Sep 11, 2020 (Retired)
Owner
Saurabh (saurabharora90)
Contributor
Saurabh (saurabharora90)
1
Activity
Badge
Generate
Download
Source code

Advertisement

OnePreference

A library which provides the ability to present all your preference in a single list on the phone, without the two-step header and detail approach followed by the Android SDK. For tablets, it uses the two pane layout. See the blog post here: https://medium.com/@saurabharora90/one-pref-for-androids-pride-b254e79f7d88

Change-logs

Check out the Release Notes for the change-logs in each release.

Usage

Add a dependency to your build.gradle:

dependencies {
compile 'com.sa90.onepreference:library:1.0.2'

}

The library provides an abstract class (BaseOnePreferenceActivity) and an out of box implementation (OnePreferenceActivity). If you are comfortable with using the out of box implementation, then include it in your manifest file.

<activity android:name="com.sa90.onepreference.OnePreferenceActivity" />

Also remember to setup the preference and toolbar style for the OnePreferenceActivity. We are using the material theme for the preference.

<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <!-- Customize your theme here. -->
    <item name="preferenceTheme">@style/PreferenceThemeOverlay.v14.Material</item>
    <item name="onePref_toolbarStyle">@style/AppTheme.AppBarOverlay</item>
</style>

Next you would a headers.xml file (just like the PreferenceActivity) along with their corresponding fragments. Note: The preference fragments should extend from BaseOnePreferenceFragment.

<?xml version="1.0" encoding="utf-8"?>
<preference-headers xmlns:onepref="http://schemas.android.com/apk/res-auto">

<header onepref:fragment="com.sa90.onepreferencedemo.fragment.Header1Fragment"
    onepref:title="@string/header1" />
    
<header onepref:fragment="com.sa90.onepreferencedemo.fragment.Header2Fragment"
    onepref:title="@string/header2" />
    
<header onepref:fragment="com.sa90.onepreferencedemo.fragment.AboutFragment"
    onepref:title="@string/header3" />

</preference-headers>

Lastly you can start the OnePreferenceActivity by using the OnePreferenceHelper

OnePreferenceHelper.startActivity(@XmlRes int headerRes, String title, Activity callingActivity)

Check out the Wiki if you need more information about how to customise the out of box toolbar or how to use your own layout for the PreferencesActivity. License

Copyright 2016 Saurabh Arora

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.