From 21c054a8e07e438c954df3175cf07278073508fc Mon Sep 17 00:00:00 2001 From: Henning Hall Date: Sat, 29 Aug 2020 11:43:15 +0200 Subject: [PATCH] center 24h time mode wheels (#237) --- .../henninghall/date_picker/DerivedData.java | 4 ++++ .../date_picker/wheels/MinutesWheel.java | 2 +- .../henninghall/date_picker/wheels/Wheel.java | 1 + src/DatePickerAndroid.js | 18 ++++++++++-------- 4 files changed, 16 insertions(+), 9 deletions(-) diff --git a/android/src/main/java/com/henninghall/date_picker/DerivedData.java b/android/src/main/java/com/henninghall/date_picker/DerivedData.java index eec7bc1..ece342e 100644 --- a/android/src/main/java/com/henninghall/date_picker/DerivedData.java +++ b/android/src/main/java/com/henninghall/date_picker/DerivedData.java @@ -121,4 +121,8 @@ public class DerivedData { return Utils.deviceUsesAmPm(); } + public boolean hasOnly2Wheels(){ + return state.getMode() == Mode.time && !usesAmPm(); + } + } diff --git a/android/src/main/java/com/henninghall/date_picker/wheels/MinutesWheel.java b/android/src/main/java/com/henninghall/date_picker/wheels/MinutesWheel.java index 740fb50..8afa3fc 100644 --- a/android/src/main/java/com/henninghall/date_picker/wheels/MinutesWheel.java +++ b/android/src/main/java/com/henninghall/date_picker/wheels/MinutesWheel.java @@ -47,7 +47,7 @@ public class MinutesWheel extends Wheel { @Override public Paint.Align getTextAlign() { - return Paint.Align.RIGHT; + return state.derived.hasOnly2Wheels() ? Paint.Align.LEFT : Paint.Align.RIGHT; } } diff --git a/android/src/main/java/com/henninghall/date_picker/wheels/Wheel.java b/android/src/main/java/com/henninghall/date_picker/wheels/Wheel.java index 12357a8..9fbbb4e 100644 --- a/android/src/main/java/com/henninghall/date_picker/wheels/Wheel.java +++ b/android/src/main/java/com/henninghall/date_picker/wheels/Wheel.java @@ -122,6 +122,7 @@ public abstract class Wheel { public int getHorizontalPadding() { Mode mode = state.getMode(); + if(state.derived.hasOnly2Wheels()) return 10; switch (mode){ case date: return 15; case time: diff --git a/src/DatePickerAndroid.js b/src/DatePickerAndroid.js index 40d6ffa..0032f9e 100644 --- a/src/DatePickerAndroid.js +++ b/src/DatePickerAndroid.js @@ -8,6 +8,10 @@ const NativeDatePicker = requireNativeComponent( { nativeOnly: { onChange: true } } ) +const height = 180 +const timeModeWidth = 240 +const defaultWidth = 310 + class DatePickerAndroid extends React.PureComponent { render() { return ( @@ -17,12 +21,17 @@ class DatePickerAndroid extends React.PureComponent { minimumDate={this._minimumDate()} maximumDate={this._maximumDate()} onChange={this._onChange} - style={[styles.picker, this.props.style]} + style={this.getStyle()} utc={this.props.timeZoneOffsetInMinutes !== undefined} /> ) } + getStyle = () => { + const width = this.props.mode === 'time' ? timeModeWidth : defaultWidth + return [{ width, height }, this.props.style] + } + _onChange = e => { const jsDate = this._fromIsoWithTimeZoneOffset(e.nativeEvent.date).toDate() this.props.onDateChange && this.props.onDateChange(jsDate) @@ -60,11 +69,4 @@ class DatePickerAndroid extends React.PureComponent { } } -const styles = StyleSheet.create({ - picker: { - width: 310, - height: 180, - }, -}) - export default DatePickerAndroid