Skip to content

Commit

Permalink
make min & max value configurable
Browse files Browse the repository at this point in the history
  • Loading branch information
ru26kif committed Aug 26, 2020
1 parent abbd8fe commit 38a2557
Show file tree
Hide file tree
Showing 3 changed files with 27 additions and 5 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -18,23 +18,33 @@
*/
public class EditFloatPreference extends EditTextPreference {
public static final String TAG = EditFloatPreference.class.getSimpleName();
private float minimumValue=Float.MIN_VALUE;
private float maximumValue=Float.MAX_VALUE;

public EditFloatPreference(Context context) {
super(context);
init();
init(null,0);
}

public EditFloatPreference(Context context, AttributeSet attrs) {
super(context, attrs);
init();
init(attrs,0);
}

public EditFloatPreference(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
init();
init(attrs,defStyle);
}

private void init(){
private void init(AttributeSet attrs, int defStyle){
if(attrs!=null){
TypedArray a = getContext().getTheme().obtainStyledAttributes(
attrs, R.styleable.EditIntPreference, defStyle, defStyle);
minimumValue=a.getFloat(R.styleable.EditFloatPreference_minFloatValue,Float.MIN_VALUE);
maximumValue=a.getFloat(R.styleable.EditFloatPreference_maxFloatValue,Float.MAX_VALUE);
Log.d(TAG,"Min & max"+minimumValue+" "+maximumValue);
a.recycle();
}
super.setOnBindEditTextListener(new OnBindEditTextListener() {
@Override
public void onBindEditText(@NonNull EditText editText) {
Expand All @@ -58,6 +68,12 @@ protected boolean persistString(String value) {
float floatValue;
try {
floatValue = Float.parseFloat(value);
if(floatValue<minimumValue || floatValue>maximumValue){
final String allowedRange="["+minimumValue+","+maximumValue+"]";
Log.e(TAG, "Value is not in range: "+allowedRange+" " + value);
setSummary("Invalid value.Select "+allowedRange);
return false;
}
} catch (NumberFormatException e) {
Log.e(TAG, "Unable to parse preference value: " + value);
setSummary("Invalid value");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@ private void init(AttributeSet attrs, int defStyle){
minimumValue=a.getInteger(R.styleable.EditIntPreference_minIntValue,Integer.MIN_VALUE);
maximumValue=a.getInteger(R.styleable.EditIntPreference_maxIntValue,Integer.MAX_VALUE);
Log.d(TAG,"Min & max"+minimumValue+" "+maximumValue);
a.recycle();
}
super.setOnBindEditTextListener(new OnBindEditTextListener() {
@Override
Expand Down Expand Up @@ -77,7 +78,6 @@ protected boolean persistString(String value) {
setSummary("Invalid value");
return false;
}

setSummary(value);
return persistInt(intValue);
}
Expand Down
6 changes: 6 additions & 0 deletions prefs-plusx/src/main/res/values/attrs.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,17 @@
<attr name="minIntValue" format="integer" />
<attr name="maxIntValue" format="integer" />

<attr name="minFloatValue" format="float" />
<attr name="maxFloatValue" format="float" />

<declare-styleable name="EditIntPreference">
<attr name="minIntValue" />
<attr name="maxIntValue" />
</declare-styleable>

<declare-styleable name="EditFloatPreference">
<attr name="minFloatValue" />
<attr name="maxFloatValue" />
</declare-styleable>

</resources>

0 comments on commit 38a2557

Please sign in to comment.