diff --git a/android/src/main/java/com/reactnativecommunity/picker/ReactPicker.java b/android/src/main/java/com/reactnativecommunity/picker/ReactPicker.java index f215c41e20..b24c6cee18 100644 --- a/android/src/main/java/com/reactnativecommunity/picker/ReactPicker.java +++ b/android/src/main/java/com/reactnativecommunity/picker/ReactPicker.java @@ -285,6 +285,19 @@ public void setDropdownIconRippleColor(@Nullable int color) { backgroundDrawable.setColor(ColorStateList.valueOf(color)); } + public void setDropdownIconVisible(@Nullable boolean visible) { + LayerDrawable drawable = (LayerDrawable) this.getBackground(); + RippleDrawable backgroundDrawable = (RippleDrawable) drawable.findDrawableByLayerId(R.id.dropdown_icon); + + if (Boolean.TRUE.equals(visible)) { + backgroundDrawable.setAlpha(255); + } + else { + backgroundDrawable.setAlpha(0); + } + + } + public void setBackgroundColor(@Nullable int color) { LayerDrawable drawable = (LayerDrawable) this.getBackground(); GradientDrawable backgroundDrawable = (GradientDrawable) drawable.findDrawableByLayerId(R.id.dropdown_background); diff --git a/android/src/main/java/com/reactnativecommunity/picker/ReactPickerManager.java b/android/src/main/java/com/reactnativecommunity/picker/ReactPickerManager.java index 6299432d9f..198507658b 100644 --- a/android/src/main/java/com/reactnativecommunity/picker/ReactPickerManager.java +++ b/android/src/main/java/com/reactnativecommunity/picker/ReactPickerManager.java @@ -181,6 +181,11 @@ public void setDropdownIconRippleColor(ReactPicker view, @Nullable int color) { view.setDropdownIconRippleColor(color); } + @ReactProp(name = "dropdownIconVisible") + public void setDropdownIconVisible(ReactPicker view, @Nullable boolean visible) { + view.setDropdownIconVisible(visible); + } + @ReactProp(name = ViewProps.NUMBER_OF_LINES, defaultInt = 1) public void setNumberOfLines(ReactPicker view, int numberOfLines) { ReactPickerAdapter adapter = (ReactPickerAdapter) view.getAdapter(); diff --git a/android/src/main/jni/conversions.h b/android/src/main/jni/conversions.h index cbeacff8ab..0c38b556c9 100644 --- a/android/src/main/jni/conversions.h +++ b/android/src/main/jni/conversions.h @@ -50,6 +50,7 @@ namespace facebook values["backgroundColor"] = props.backgroundColor; values["dropdownIconColor"] = props.dropdownIconColor; values["dropdownIconRippleColor"] = props.dropdownIconRippleColor; + values["dropdownIconVisible"] = props.dropdownIconVisible; values["numberOfLines"] = props.numberOfLines; values["mode"] = "dialog"; @@ -97,6 +98,7 @@ namespace facebook values["backgroundColor"] = props.backgroundColor; values["dropdownIconColor"] = props.dropdownIconColor; values["dropdownIconRippleColor"] = props.dropdownIconRippleColor; + values["dropdownIconVisible"] = props.dropdownIconVisible; values["numberOfLines"] = props.numberOfLines; values["mode"] = "dropdown"; diff --git a/android/src/paper/java/com/facebook/react/viewmanagers/RNCAndroidDialogPickerManagerDelegate.java b/android/src/paper/java/com/facebook/react/viewmanagers/RNCAndroidDialogPickerManagerDelegate.java index ec47a941ac..b53a3a2af4 100644 --- a/android/src/paper/java/com/facebook/react/viewmanagers/RNCAndroidDialogPickerManagerDelegate.java +++ b/android/src/paper/java/com/facebook/react/viewmanagers/RNCAndroidDialogPickerManagerDelegate.java @@ -47,6 +47,9 @@ public void setProperty(T view, String propName, @Nullable Object value) { case "dropdownIconRippleColor": mViewManager.setDropdownIconRippleColor(view, value == null ? 0 : ((Double) value).intValue()); break; + case "dropdownIconVisible": + mViewManager.setDropdownIconVisible(view, value == null ? true : (boolean) value); + break; case "numberOfLines": mViewManager.setNumberOfLines(view, value == null ? 0 : ((Double) value).intValue()); break; diff --git a/android/src/paper/java/com/facebook/react/viewmanagers/RNCAndroidDialogPickerManagerInterface.java b/android/src/paper/java/com/facebook/react/viewmanagers/RNCAndroidDialogPickerManagerInterface.java index 0e276a1ee9..847a3b4792 100644 --- a/android/src/paper/java/com/facebook/react/viewmanagers/RNCAndroidDialogPickerManagerInterface.java +++ b/android/src/paper/java/com/facebook/react/viewmanagers/RNCAndroidDialogPickerManagerInterface.java @@ -22,6 +22,7 @@ public interface RNCAndroidDialogPickerManagerInterface { void setBackgroundColor(T view, int value); void setDropdownIconColor(T view, int value); void setDropdownIconRippleColor(T view, int value); + void setDropdownIconVisible(T view, boolean value); void setNumberOfLines(T view, int value); void focus(T view); void blur(T view); diff --git a/android/src/paper/java/com/facebook/react/viewmanagers/RNCAndroidDropdownPickerManagerDelegate.java b/android/src/paper/java/com/facebook/react/viewmanagers/RNCAndroidDropdownPickerManagerDelegate.java index 4ee8df37f1..3010eb3fce 100644 --- a/android/src/paper/java/com/facebook/react/viewmanagers/RNCAndroidDropdownPickerManagerDelegate.java +++ b/android/src/paper/java/com/facebook/react/viewmanagers/RNCAndroidDropdownPickerManagerDelegate.java @@ -47,6 +47,9 @@ public void setProperty(T view, String propName, @Nullable Object value) { case "dropdownIconRippleColor": mViewManager.setDropdownIconRippleColor(view, value == null ? 0 : ((Double) value).intValue()); break; + case "dropdownIconVisible": + mViewManager.setDropdownIconVisible(view, value == null ? true : (boolean) value); + break; case "numberOfLines": mViewManager.setNumberOfLines(view, value == null ? 0 : ((Double) value).intValue()); break; diff --git a/android/src/paper/java/com/facebook/react/viewmanagers/RNCAndroidDropdownPickerManagerInterface.java b/android/src/paper/java/com/facebook/react/viewmanagers/RNCAndroidDropdownPickerManagerInterface.java index 8a7b516cb7..c3ac78455f 100644 --- a/android/src/paper/java/com/facebook/react/viewmanagers/RNCAndroidDropdownPickerManagerInterface.java +++ b/android/src/paper/java/com/facebook/react/viewmanagers/RNCAndroidDropdownPickerManagerInterface.java @@ -22,6 +22,7 @@ public interface RNCAndroidDropdownPickerManagerInterface { void setBackgroundColor(T view, int value); void setDropdownIconColor(T view, int value); void setDropdownIconRippleColor(T view, int value); + void setDropdownIconVisible(T view, boolean value); void setNumberOfLines(T view, int value); void focus(T view); void blur(T view); diff --git a/js/AndroidDialogPickerNativeComponent.js b/js/AndroidDialogPickerNativeComponent.js index 444b9195f4..fb422cc4e9 100644 --- a/js/AndroidDialogPickerNativeComponent.js +++ b/js/AndroidDialogPickerNativeComponent.js @@ -53,6 +53,7 @@ type NativeProps = $ReadOnly<{| backgroundColor?: Int32, dropdownIconColor?: Int32, dropdownIconRippleColor?: Int32, + dropdownIconVisible?: ?boolean, numberOfLines?: ?Int32, onSelect?: BubblingEventHandler, onFocus?: BubblingEventHandler, diff --git a/js/AndroidDropdownPickerNativeComponent.js b/js/AndroidDropdownPickerNativeComponent.js index 6666e539a5..01225b50d2 100644 --- a/js/AndroidDropdownPickerNativeComponent.js +++ b/js/AndroidDropdownPickerNativeComponent.js @@ -53,6 +53,7 @@ type NativeProps = $ReadOnly<{| backgroundColor?: Int32, dropdownIconColor?: Int32, dropdownIconRippleColor?: Int32, + dropdownIconVisible?: ?boolean, numberOfLines?: ?Int32, onSelect?: BubblingEventHandler, onFocus?: BubblingEventHandler, diff --git a/js/PickerAndroid.android.js b/js/PickerAndroid.android.js index bdc5a8a05b..59c55e45bf 100644 --- a/js/PickerAndroid.android.js +++ b/js/PickerAndroid.android.js @@ -40,6 +40,7 @@ type PickerAndroidProps = $ReadOnly<{| prompt?: ?string, testID?: string, dropdownIconColor?: string, + dropdownIconVisible?: ?boolean, numberOfLines?: ?number, |}>; @@ -230,6 +231,7 @@ function PickerAndroid(props: PickerAndroidProps, ref: PickerRef): React.Node { style: props.style, dropdownIconColor: processColor(props.dropdownIconColor), dropdownIconRippleColor: processColor(props.dropdownIconRippleColor), + dropdownIconVisible: props.dropdownIconVisible, testID: props.testID, numberOfLines: props.numberOfLines, }; diff --git a/typings/Picker.d.ts b/typings/Picker.d.ts index 67a1e4b60f..109bb3901c 100644 --- a/typings/Picker.d.ts +++ b/typings/Picker.d.ts @@ -95,6 +95,11 @@ export interface PickerProps extends ViewProps { * @platform android */ dropdownIconRippleColor?: number | ColorValue; + /** + * Visibility of spinner's arrow + * @platform android + */ + dropdownIconVisible?: boolean; /** * On Android & iOS, used to truncate the text with an ellipsis after computing the text layout, including line wrapping, * such that the total number of lines does not exceed this number. Default is '1'