invissvenska / NumberPickerPreference

An AndroidX preference based NumberPicker

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

NumberPickerPreference

API Build Status Buy Me A Coffee donate button

Prerequisites

Add this in your root build.gradle file (not your module build.gradle file):

allprojects {
    repositories {
        ...
        maven { url "https://jitpack.io" }
    }
}

Dependency

Add this to your module's build.gradle file (make sure the version matches the JitPack badge above):

dependencies {
    ...
    implementation 'com.github.invissvenska:NumberPickerPreference:VERSION'
}

Configuration

Add the NumberDialogPreference to the preferences.xml:

<nl.invissvenska.numberpickerpreference.NumberDialogPreference
    android:key="preference_key"
    android:title="Preference title"
    app:numberPickerPreference_minValue="10"
    app:numberPickerPreference_maxValue="60"
    app:numberPickerPreference_unitText=" another quantity" /> 

Usage

Override the OnDisplayPreferenceDialog method in your fragment which extends the PreferenceFragmentCompat class:

public class SettingsFragment extends PreferenceFragmentCompat {

    private static final String DIALOG_FRAGMENT_TAG = "CustomPreferenceDialog";
    
    // some other code

    @Override
    public void onDisplayPreferenceDialog(Preference preference) {
        if (preference instanceof NumberDialogPreference) {
            NumberDialogPreference dialogPreference = (NumberDialogPreference) preference;
            DialogFragment dialogFragment = NumberPickerPreferenceDialogFragment
                    .newInstance(
                            dialogPreference.getKey(),
                            dialogPreference.getMinValue(),
                            dialogPreference.getMaxValue(),
                            dialogPreference.getStepValue(),
                            dialogPreference.getUnitText()
                    );
            dialogFragment.setTargetFragment(this, 0);
            dialogFragment.show(getParentFragmentManager(), DIALOG_FRAGMENT_TAG);
        } else {
            super.onDisplayPreferenceDialog(preference);
        }
    }
}

To create a NumberPickerPreference with default value of 20, min value of 10, max value of 60, increments of 2 and custom unit text:

<nl.invissvenska.numberpickerpreference.NumberDialogPreference
    android:key="preference_key"
    android:title="Preference title"
    app:defaultValue="20"
    app:numberPickerPreference_minValue="10"
    app:numberPickerPreference_maxValue="60"
    app:numberPickerPreference_stepValue="2"
    app:numberPickerPreference_unitText=" another quantity" />

NumberDialogPreference Attributes

Attributes Type Default Mandatory Description
defaultValue Integer 0 No Sets the default value of the preference.
numberPickerPreference_minValue Integer 0 No Minimum value to select from preference.
numberPickerPreference_maxValue Integer 100 No Maximum value to select from preference.
numberPickerPreference_stepValue Integer 1 No Stepper value, minimum value should be 1.
numberPickerPreference_unitText String none No Suffix value, can be used to indicate the unit which will be selected.

Screenshots

Please click the image below to enlarge.

About

An AndroidX preference based NumberPicker

License:GNU Lesser General Public License v3.0


Languages

Language:Java 100.0%