diff --git a/README.md b/README.md index 846bffc816ad77ffc394f67621a6cb799bd4d37a..4030ecfa5dde63e3b03619dded51dca97bbc97d5 100644 --- a/README.md +++ b/README.md @@ -25,6 +25,7 @@ |wheelFlex | array | [1, 1, 1] | iOS/Android | | |pickerFontSize | number | 16 | iOS/Android | | |pickerFontColor | array | [31, 31, 31, 1] | iOS/Android | | +|pickerFontFamily | string | | Android | | |pickerRowHeight | number | 24 | iOS | | |pickerData | array | | iOS/Android | | |selectedValue | array | | iOS/Android | | diff --git a/android/src/main/java/com/beefe/picker/PickerViewModule.java b/android/src/main/java/com/beefe/picker/PickerViewModule.java index 50a212af885a8acb1026c8f8973f5855ae6ea416..813a0bddfa068a398027d50b752f4cc78957574b 100644 --- a/android/src/main/java/com/beefe/picker/PickerViewModule.java +++ b/android/src/main/java/com/beefe/picker/PickerViewModule.java @@ -1,9 +1,11 @@ package com.beefe.picker; +import android.content.res.AssetManager; import android.app.Activity; import android.app.Dialog; import android.graphics.Color; import android.graphics.PixelFormat; +import android.graphics.Typeface; import android.support.annotation.Nullable; import android.text.TextUtils; import android.view.Gravity; @@ -75,6 +77,10 @@ import static android.graphics.Color.argb; */ public class PickerViewModule extends ReactContextBaseJavaModule implements LifecycleEventListener { + + private static final String FONTS = "fonts/"; + private static final String OTF = ".otf"; + private static final String TTF = ".ttf"; private static final String REACT_CLASS = "BEEPickerManager"; @@ -104,6 +110,8 @@ public class PickerViewModule extends ReactContextBaseJavaModule implements Life private static final String PICKER_TEXT_SIZE = "pickerFontSize"; private static final String PICKER_TEXT_ELLIPSIS_LEN = "pickerTextEllipsisLen"; + private static final String PICKER_FONT_FAMILY = "pickerFontFamily"; + private static final String PICKER_EVENT_NAME = "pickerEvent"; private static final String EVENT_KEY_CONFIRM = "confirm"; private static final String EVENT_KEY_CANCEL = "cancel"; @@ -340,6 +348,32 @@ public class PickerViewModule extends ReactContextBaseJavaModule implements Life break; } + if (options.hasKey(PICKER_FONT_FAMILY)) { + Typeface typeface = null; + AssetManager assetManager = activity.getApplicationContext().getAssets(); + final String fontFamily = options.getString(PICKER_FONT_FAMILY); + try { + String path = FONTS + fontFamily + TTF; + typeface = Typeface.createFromAsset(assetManager, path); + } catch (Exception ignored) { + try { + String path = FONTS + fontFamily + OTF; + typeface = Typeface.createFromAsset(assetManager, path); + } catch (Exception ignored2) { + try { + typeface = Typeface.create(fontFamily, Typeface.NORMAL); + } catch (Exception ignored3) { + } + } + } + cancelTV.setTypeface(typeface); + titleTV.setTypeface(typeface); + confirmTV.setTypeface(typeface); + + pickerViewAlone.setTypeface(typeface); + pickerViewLinkage.setTypeface(typeface); + } + if (options.hasKey(SELECTED_VALUE)) { ReadableArray array = options.getArray(SELECTED_VALUE); String[] selectedValue = getSelectedValue(array); diff --git a/android/src/main/java/com/beefe/picker/view/LoopView.java b/android/src/main/java/com/beefe/picker/view/LoopView.java index 3c07cc54af70c38ba93231f4e8cfa8b93532f685..a30ce35c78bb6d7b32b05faab518b7bb21d8968d 100644 --- a/android/src/main/java/com/beefe/picker/view/LoopView.java +++ b/android/src/main/java/com/beefe/picker/view/LoopView.java @@ -203,6 +203,12 @@ public class LoopView extends View { invalidate(); } + public void setTypeface(Typeface typeface){ + paintOuterText.setTypeface(typeface); + paintCenterText.setTypeface(typeface); + invalidate(); + } + public final void setNotLoop() { isLoop = false; } diff --git a/android/src/main/java/com/beefe/picker/view/PickerViewAlone.java b/android/src/main/java/com/beefe/picker/view/PickerViewAlone.java index b24e6b176aa17784def00f6eb9ca1b2cea558820..7b4bc111d4769e0d0ac880df9871c43ea025e370 100644 --- a/android/src/main/java/com/beefe/picker/view/PickerViewAlone.java +++ b/android/src/main/java/com/beefe/picker/view/PickerViewAlone.java @@ -1,6 +1,7 @@ package com.beefe.picker.view; import android.content.Context; +import android.graphics.Typeface; import android.util.AttributeSet; import android.view.LayoutInflater; import android.view.View; @@ -212,6 +213,17 @@ public class PickerViewAlone extends LinearLayout { } } + public void setTypeface(Typeface typeface){ + int viewCount = pickerViewAloneLayout.getChildCount(); + for (int i = 0; i < viewCount; i++) { + View view = pickerViewAloneLayout.getChildAt(i); + if (view instanceof LoopView) { + LoopView loopView = (LoopView) view; + loopView.setTypeface(typeface); + } + } + } + public void setTextEllipsisLen(int len){ int viewCount = pickerViewAloneLayout.getChildCount(); for (int i = 0; i < viewCount; i++) { diff --git a/android/src/main/java/com/beefe/picker/view/PickerViewLinkage.java b/android/src/main/java/com/beefe/picker/view/PickerViewLinkage.java index f1e6be3766183e6455fd0c2aa2605315ea4c16e9..c8c522b5d9f5de2cac12d8bccf2962fb9ab4f441 100644 --- a/android/src/main/java/com/beefe/picker/view/PickerViewLinkage.java +++ b/android/src/main/java/com/beefe/picker/view/PickerViewLinkage.java @@ -1,6 +1,7 @@ package com.beefe.picker.view; import android.content.Context; +import android.graphics.Typeface; import android.util.AttributeSet; import android.view.LayoutInflater; import android.view.View; @@ -603,6 +604,20 @@ public class PickerViewLinkage extends LinearLayout { } } + public void setTypeface(Typeface typeface){ + switch (curRow) { + case 2: + loopViewOne.setTypeface(typeface); + loopViewTwo.setTypeface(typeface); + break; + case 3: + loopViewOne.setTypeface(typeface); + loopViewTwo.setTypeface(typeface); + loopViewThree.setTypeface(typeface); + break; + } + } + public void setTextEllipsisLen(int len){ switch (curRow) { case 2: