Git Product home page Git Product logo

android-support-preference-v7-fix's Introduction

AndroidX Preference eXtended

This library is meant to fix some of the problems found in the official AndroidX preference library. Also, there are new preference types available, such as RingtonePreference, DatePickerPreference, and TimePickerPreference.

Maven Central

Donation

If you would like to support me, you may donate some small amount via PayPal.

Buy me a coffee


How to use the library?

1. Add gradle dependency

Add this to your gradle file:

implementation "androidx.preference:preference:$androidxVersion"
implementation 'com.takisoft.preferencex:preferencex:1.1.0'

2. Use the appropriate class as your fragment's base

import com.takisoft.preferencex.PreferenceFragmentCompat;

public class MyPreferenceFragment extends PreferenceFragmentCompat {

    @Override
    public void onCreatePreferencesFix(@Nullable Bundle savedInstanceState, String rootKey) {
        setPreferencesFromResource(R.xml.settings, rootKey);
	
	// additional setup
    }
}

Warning! Watch out for the correct package name when importing PreferenceFragmentCompat, it should come from com.takisoft.preferencex.

Now you can enjoy using preferenceX.


Extra types

There are additional preferences not part of the official support library, but decided to add them to some extra libraries. You can add them to your project using Gradle.

Preference Dependency Preview
RingtonePreference implementation 'com.takisoft.preferencex:preferencex-ringtone:1.1.0' API 26
DatePickerPreference implementation 'com.takisoft.preferencex:preferencex-datetimepicker:1.1.0' API 26
TimePickerPreference implementation 'com.takisoft.preferencex:preferencex-datetimepicker:1.1.0' API 26
ColorPickerPreference implementation 'com.takisoft.preferencex:preferencex-colorpicker:1.1.0' API 26
SimpleMenuPreference implementation 'com.takisoft.preferencex:preferencex-simplemenu:1.1.0' (can be used independent of preferencex) API 26

Custom solutions

Hijacked EditTextPreference

The support implementation of EditTextPreference ignores many of the basic yet very important attributes as it doesn't forward them to the underlying EditText widget. In my opinion this is a result of some twisted thinking which would require someone to create custom dialog layouts for some simple tasks, like showing a numbers-only dialog. This is the main reason why the EditTextPreference gets hijacked by this lib: it replaces certain aspects of the original class in order to forward all the XML attributes set (such as inputType) on the EditTextPreference to the EditText, and also provides a getEditText() method so it can be manipulated directly.

The sample app shows an example of setting (via XML) and querying (programmatically) the input type of the EditTextPreference:

<EditTextPreference
    android:inputType="phone"
    android:key="edit_text_test" />
EditTextPreference etPref = (EditTextPreference) findPreference("edit_text_test");
if (etPref != null) {
    int inputType = etPref.getEditText().getInputType();
    // do something with inputType
}

Note! Watch out for the correct package name when importing EditTextPreference, it should come from com.takisoft.preferencex. If you import from the wrong package (i.e. androidx.preference), the getEditText() method will not be available, however, the XML attributes will still be forwarded and processed by the EditText.

Others

  • Convenience methods in PreferenceFragmentCompat;
  • PreferenceCategory with different colors;
  • AutoSummaryEditTextPreference;
  • PreferenceActivityResultListener;
  • EditTextPreference correctly calls notifyChange. (#66)

Version

The current stable version is 1.1.0.

Notes

This demo / bugfix is set to work on API level 14+.


Sample

Material design - everywhere.

API 15 API 21 API 26
API 15 API 21 API 26

Changelog

See the separate CHANGELOG.md file.

2019-11-26

New version: 1.1.0 (based on v1.1.0)

  • introduced PreferenceFragmentCompatMasterSwitch that can be used as a switch's additional screen for settings; see the sample for details
  • Added pref_disableMessagePaddingFix attribute to the EditTextPreference that can be used to disable the dialog message padding fix.
  • EditText does not receive all attributes from EditTextPreference from now, only the following: inputType, textAllCaps, lines, minLines, maxLines, ems, minEms, maxEms
  • AutoSummaryEditTextPreference is now deprecated, use an appropriate SummaryProvider with the EditTextPreference

For older changelogs, check out the CHANGELOG file.

Feel free to ask / suggest anything on this page by creating a ticket (issues)!

License notes

Apache v2

android-support-preference-v7-fix's People

Contributors

connyduck avatar gericop avatar masmas-studio avatar mgaetan89 avatar mygod avatar pavel-zolotov avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.