diff --git a/src/android/src/main/java/com/reactnativecommunity/slider/ReactSliderManager.java b/src/android/src/main/java/com/reactnativecommunity/slider/ReactSliderManager.java index 4f1fdc08..ea9ca025 100644 --- a/src/android/src/main/java/com/reactnativecommunity/slider/ReactSliderManager.java +++ b/src/android/src/main/java/com/reactnativecommunity/slider/ReactSliderManager.java @@ -23,6 +23,7 @@ import com.facebook.react.uimanager.UIManagerModule; import com.facebook.react.uimanager.ViewProps; import com.facebook.react.uimanager.annotations.ReactProp; +import com.facebook.react.uimanager.annotations.ReactPropGroup; import com.facebook.yoga.YogaMeasureFunction; import com.facebook.yoga.YogaMeasureMode; import com.facebook.yoga.YogaMeasureOutput; @@ -30,6 +31,7 @@ import java.util.Map; import javax.annotation.Nullable; +import android.content.res.Resources; /** * Manages instances of {@code ReactSlider}. @@ -213,6 +215,33 @@ public void setInverted(ReactSlider view, boolean inverted) { else view.setScaleX(1f); } + + public static int dpToPx(int dp) { + return (int) (dp * Resources.getSystem().getDisplayMetrics().density); + } + + public static int pxToDp(int px) { + return (int) (px / Resources.getSystem().getDisplayMetrics().density); + } + + @ReactPropGroup(names = { + ViewProps.PADDING, + ViewProps.PADDING_LEFT, + ViewProps.PADDING_TOP, + ViewProps.PADDING_RIGHT, + ViewProps.PADDING_BOTTOM, + }, customType = "Style") + public void setStyle(ReactSlider view, int index, Integer value) { + value = dpToPx(value); + if(index == 0) { + view.setPadding(value, value, value, value); + } else { + int array[] = {view.getPaddingLeft(), view.getPaddingTop(), view.getPaddingRight(), view.getPaddingBottom()}; + array[index - 1] = value; + view.setPadding(array[0], array[1], array[2], array[3]); + } + } + @Override protected void addEventEmitters(final ThemedReactContext reactContext, final ReactSlider view) { view.setOnSeekBarChangeListener(ON_CHANGE_LISTENER);