Π΄Π°
Π΄Π°, ΠΌΠ½Π΅ ΠΎΡΠ΅Π½Ρ ΠΆΠ°Π»Ρ, ΡΡΠΎ Ρ Π½Π΅ ΠΌΠΎΠ³Ρ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎΠ± ΡΡΠΎΠΌ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΈ, ΠΊΡΠΎΠΌΠ΅ ΡΡΠ°ΡΡΠΈΡΠΎΠ²ΠΊΠΈ ΡΡΠ΅ΠΊΠ°, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΎΡΡΠ΅Ρ ΠΎ ΡΠ±ΠΎΠ΅ Π±ΡΠ» ΡΠΎΠ±ΡΠ°Π½ ΠΈΠ· Google Analytics, Ρ Π½Π΅ Π·Π½Π°Ρ, ΡΡΠΎΠ±Ρ ΡΠ½ΠΎΠ²Π° ΠΏΠΎΡΠ²ΠΈΠ»ΠΎΡΡ ΡΡΠΎ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅.
ΠΠΊΡΡΠΆΠ°ΡΡΠ°Ρ ΠΎΠ±ΡΡΠ°Π½ΠΎΠ²ΠΊΠ°:
ΠΠ‘: macOS Sierra 10.12.6
Π£Π·Π΅Π»: 8.4.0
ΠΡΡΠΆΠ°: 0,27,5
npm: 5.4.0
Android Studio: 3.0
ΠΠ°ΠΊΠ΅ΡΡ: (Ρ
ΠΎΡΠ΅Π» => ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½)
ΡΠ΅Π°Π³ΠΈΡΠΎΠ²Π°ΡΡ-ΡΠΎΠ΄Π½ΠΎΠΉ: 0.51.0 => 0.51.0
ΡΠ΅Π°Π³ΠΈΡΠΎΠ²Π°ΡΡ: 16.0.0-alpha.12 => 16.0.0-alpha.12
Π¦Π΅Π»Π΅Π²Π°Ρ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°: Android (7.1.1)
ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΡΠΉ: MIX 2
Π°Π½Π΄ΡΠΎΠΈΠ΄: 7.1.1
java.lang.NullPointerException:
ΡΠΎΠ±Π»Π°Π·Π½ Π²ΡΠ·Π²Π°ΡΡ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ android.graphics.drawable.Drawable android.graphics.drawable.Drawable $ ConstantState.newDrawable (android.content.res.Resources) Π΄Π»Ρ ΡΡΡΠ»ΠΊΠΈ Π½Π° Π½ΡΠ»Π΅Π²ΠΎΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ Π²
android.graphics.drawable.DrawableContainer $ DrawableContainerState.getChild (DrawableContainer.java:888) Π²
android.graphics.drawable.DrawableContainer.selectDrawable (DrawableContainer.java:466) Π²
android.graphics.drawable.StateListDrawable.onStateChange (StateListDrawable.java:104) Π²
android.graphics.drawable.Drawable.setState (Drawable.java:735) Π²
android.graphics.drawable.DrawableWrapper.onStateChange (DrawableWrapper.java:331) Π²
android.graphics.drawable.Drawable.setState (Drawable.java:735) Π²
android.graphics.drawable.LayerDrawable.onStateChange (LayerDrawable.java:1488) Π²
android.graphics.drawable.Drawable.setState (Drawable.java:735) Π²
android.view.View.drawableStateChanged (View.java:18002) Π²
android.widget.TextView.drawableStateChanged (TextView.java:4097) Π²
android.view.View.refreshDrawableState (View.java:18071) Π²
android.view.View.setPressed (View.java:8543) Π²
android.view.View.setPressed (View.java:8521) Π²
android.view.View.onTouchEvent (View.java:11218) Π²
android.widget.TextView.onTouchEvent (TextView.java:8467) Π²
com.facebook.react.views.textinput.ReactEditText.onTouchEvent (ReactEditText.java:150)
Π‘ΡΠΎΠ»ΠΊΠ½ΡΠ²ΡΠΈΡΡ Ρ ΡΠΎΠΉ ΠΆΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ.
Π’ΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅ Π·Π΄Π΅ΡΡ [email protected]
com.facebook.react.views.textinput.ReactEditText.onTouchEvent
ReactEditText.java - line 163
java.lang.NullPointerException: Attempt to invoke virtual method 'android.graphics.drawable.Drawable android.graphics.drawable.Drawable$ConstantState.newDrawable(android.content.res.Resources)' on a null object reference
Attempt to invoke virtual method 'android.graphics.drawable.Drawable android.graphics.drawable.Drawable$ConstantState.newDrawable(android.content.res.Resources)' on a null object reference
1
android.graphics.drawable.DrawableContainer$DrawableContainerState.getChild DrawableContainer.java:884
2
android.graphics.drawable.DrawableContainer.selectDrawable DrawableContainer.java:466
3
android.graphics.drawable.StateListDrawable.onStateChange StateListDrawable.java:104
4
android.graphics.drawable.Drawable.setState Drawable.java:736
5
android.graphics.drawable.DrawableWrapper.onStateChange DrawableWrapper.java:331
6
android.graphics.drawable.Drawable.setState Drawable.java:736
7
android.view.View.drawableStateChanged View.java:19223
8
android.widget.TextView.drawableStateChanged TextView.java:4673
9
android.view.View.refreshDrawableState View.java:19292
10
android.view.View.setPressed View.java:9135
11
android.view.View.setPressed View.java:9113
12
android.view.View.onTouchEvent View.java:12357
13
android.widget.TextView.onTouchEvent TextView.java:10095
14
com.facebook.react.views.textinput.ReactEditText.onTouchEvent ReactEditText.java:163
Π’Π° ΠΆΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°
Π’Π° ΠΆΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°. Π’ΠΎΡ ΠΆΠ΅ ΠΆΡΡΠ½Π°Π»
Π’ΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅ Π·Π΄Π΅ΡΡ Π½Π° RN 44.0
+1 Π΅ΡΠ΅ ΠΎΠ΄ΠΈΠ½
Π Π΅Π±ΡΡ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΡΡΠΊ ΡΠΏΠ°ΠΊΠΎΠ²ΡΠΈΠΊΠ° ΠΈ ΠΎΡΠΈΡΡΠΊΠ° ΠΊΠ΅ΡΠ° Ρ ΠΌΠ΅Π½Ρ ΡΡΠ°Π±ΠΎΡΠ°Π»ΠΈ!
Π’ΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅ Π΄Π»Ρ ΠΌΠ΅Π½Ρ. Π― ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ RN 0.51.0 ΠΈ response-native-material-textfield 0.12.0.
Π― ΡΠΎΠΆΠ΅ ΡΡΠ°Π»ΠΊΠΈΠ²Π°ΡΡΡ Ρ ΡΡΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ. Π‘ΡΡΠ°Π½Π½ΠΎ ΡΠΎ, ΡΡΠΎ ΠΎΡΡΠ»Π΅Π΄ΠΈΡΡ ΠΎΡΠΈΠ±ΠΊΡ ΠΎΡΠ΅Π½Ρ ΡΠ»ΠΎΠΆΠ½ΠΎ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΡΡΠ°ΡΡΠΈΡΠΎΠ²ΠΊΠ° ΡΡΠ΅ΠΊΠ° Π½Π΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ. ΠΠ°ΠΆΠ΅ Π½Π΅ Π·Π½Π°Ρ, Π² ΡΠ΅ΠΌ ΠΌΠΎΠ³Π»Π° Π±ΡΡΡ ΠΎΡΠΈΠ±ΠΊΠ°.
ΠΡΠ΄Ρ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡΡ Π·Π΄Π΅ΡΡ, Π΅ΡΠ»ΠΈ Π½Π°ΠΉΠ΄Ρ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅
Π’Π°ΠΊΠ°Ρ ΠΆΠ΅ ΠΎΡΠΈΠ±ΠΊΠ° ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π½Π° RN 0.52.0.
Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ, ΡΡΠΎ ΡΠ°Π·ΠΌΠ΅ΡΡΠΈΠ»ΠΈ ΡΡΠΎ! ΠΠΎΡ ΠΎΠΆΠ΅, Π²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ Π½Π΅ ΠΏΠΎΡΠ»Π΅Π΄Π½ΡΡ Π²Π΅ΡΡΠΈΡ React Native v0.53.0, Π²ΡΠΏΡΡΠ΅Π½Π½ΡΡ Π² ΡΠ½Π²Π°ΡΠ΅ 2018 Π³ΠΎΠ΄Π°. ΠΠΎΠΆΠ΅ΡΠ΅ Π»ΠΈ Π²Ρ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ, ΡΡΠΎ ΡΡΠ° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π²ΡΠ΅ Π΅ΡΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½Π° Π² ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΉ Π²Π΅ΡΡΠΈΠΈ?
Π― ΡΠΎΠ±ΠΈΡΠ°ΡΡΡ Π·Π°ΠΊΡΡΡΡ ΡΡΠΎ, Π½ΠΎ, ΠΏΠΎΠΆΠ°Π»ΡΠΉΡΡΠ°, Π½Π΅ ΡΡΠ΅ΡΠ½ΡΠΉΡΠ΅ΡΡ ΠΎΡΠΊΡΡΠ²Π°ΡΡ Π½ΠΎΠ²ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, Π΅ΡΠ»ΠΈ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠ΄ΠΈΡΡ, ΡΡΠΎ ΡΡΠΎ Π²ΡΠ΅ Π΅ΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π² Π²Π΅ΡΡΠΈΠΈ 0.53.0 ΠΈΠ»ΠΈ Π½ΠΎΠ²Π΅Π΅.
ΠΠ°ΠΊ Π²Π½Π΅ΡΡΠΈ ΡΠ²ΠΎΠΉ Π²ΠΊΠ»Π°Π΄ β’ Π§Π΅Π³ΠΎ ΠΎΠΆΠΈΠ΄Π°ΡΡ ΠΎΡ ΡΠΎΠΏΡΠΎΠ²ΠΎΠΆΠ΄Π°ΡΡΠΈΡ
Π’Π° ΠΆΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Ρ 0.53.3
Π’Π° ΠΆΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°
@ response-native-bot Π’ΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ ΠΎΡΠΊΡΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ
ΡΡΠ°Π»ΠΊΠΈΠ²Π°Π΅ΡΡΡ Ρ ΡΠΎΠΉ ΠΆΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ Ρ Android 8
Π’ΠΎΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅. React native 0.53.3, SM-T550, ΡΡΠΎΠ²Π΅Π½Ρ API 25 (Android 7.0)
ΡΡΠ° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠΎ Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π° Ρ ΠΌΠ΅Π½Ρ, React native 0.53.3 - Android 8.1.
React native 0.53.3, android 8, ΡΠ° ΠΆΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°
Π’Π° ΠΆΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°, response-native 0.53.0 ΠΈ android 8. Π‘ΡΡΠ°Π½Π½ΠΎ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΡΡΠ° ΠΎΡΠΈΠ±ΠΊΠ° ΠΊΠ°ΠΆΠ΅ΡΡΡ ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎΠΉ. Π― Π½Π΅ ΠΌΠΎΠ³Ρ Π½Π°ΠΉΡΠΈ ΡΠΎΡΠ½ΡΡ ΡΠ°Π³ΠΎΠ² Π΄Π»Ρ Π΅Π³ΠΎ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΡ.
Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ RN 0.54.2, ΠΈ ΡΡΠΎ, ΠΏΠΎΡ ΠΎΠΆΠ΅, ΠΏΠΎΠ²Π»ΠΈΡΠ΅Ρ Π½Π° Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ Android 8.0.0 ΠΏΡΠΈ Π·Π°ΠΏΡΡΠΊΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
ΠΠΎΡΠ΅ΠΌΡ ΡΡΠΎΡ Π²ΠΎΠΏΡΠΎΡ Π·Π°ΠΊΡΡΡ? ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ· Π½Π°Ρ ΡΡΠ°Π»ΠΊΠΈΠ²Π°ΡΡΡΡ Ρ ΡΡΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ Π² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π΅Π½Π½ΠΎΠΉ ΡΡΠ΅Π΄Π΅, ΠΏΠΎΡΡΠΎΠΌΡ Β«ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΡΡΠΊ ΡΠΏΠ°ΠΊΠΎΠ²ΡΠΈΠΊΠ°Β» Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΡΠΈΠ΅ΠΌΠ»Π΅ΠΌΡΠΌ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ.
ΠΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΡΠΊΡΡΡΡ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΠ½Π° Π²Π»ΠΈΡΠ΅Ρ Π½Π° ΡΠ΅ΠΊΡΡΡΡ Π²Π΅ΡΡΠΈΡ.
Π― ΡΠ°ΠΊΠΆΠ΅ ΡΡΠ°Π»ΠΊΠΈΠ²Π°ΡΡΡ ΡΠΎ ΡΠ»Π΅Π΄Π°ΠΌΠΈ ΡΡΠ΅ΠΊΠ°, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΡΠ²ΡΠ·Π°Π½Ρ:
Fatal Exception: java.lang.NullPointerException: Attempt to invoke virtual method 'android.graphics.drawable.Drawable android.graphics.drawable.Drawable$ConstantState.newDrawable(android.content.res.Resources)' on a null object reference
at android.graphics.drawable.DrawableContainer$DrawableContainerState.createAllFutures(DrawableContainer.java:875)
at android.graphics.drawable.DrawableContainer$DrawableContainerState.getOpacity(DrawableContainer.java:1158)
at android.graphics.drawable.DrawableContainer.getOpacity(DrawableContainer.java:433)
at android.graphics.drawable.InsetDrawable.getOpacity(InsetDrawable.java:258)
at android.view.View.computeOpaqueFlags(View.java:16791)
at android.view.View.setBackgroundDrawable(View.java:21710)
at android.view.View.setBackground(View.java:21603)
at android.view.View.<init>(View.java:5547)
at android.widget.TextView.<init>(TextView.java:1135)
at android.widget.EditText.<init>(EditText.java:107)
at android.widget.EditText.<init>(EditText.java:103)
at android.widget.EditText.<init>(EditText.java:99)
at android.widget.EditText.<init>(EditText.java:95)
at com.facebook.react.views.textinput.ReactEditText.<init>(ReactEditText.java:92)
at com.facebook.react.views.textinput.ReactTextInputManager.createViewInstance(ReactTextInputManager.java:94)
at com.facebook.react.views.textinput.ReactTextInputManager.createViewInstance(ReactTextInputManager.java:65)
at com.facebook.react.uimanager.ViewManager.createView(ViewManager.java:46)
at com.facebook.react.uimanager.NativeViewHierarchyManager.createView(NativeViewHierarchyManager.java:218)
at com.facebook.react.uimanager.UIViewOperationQueue$CreateViewOperation.execute(UIViewOperationQueue.java:150)
at com.facebook.react.uimanager.UIViewOperationQueue$DispatchUIFrameCallback.dispatchPendingNonBatchedOperations(UIViewOperationQueue.java:923)
at com.facebook.react.uimanager.UIViewOperationQueue$DispatchUIFrameCallback.doFrameGuarded(UIViewOperationQueue.java:895)
at com.facebook.react.uimanager.GuardedFrameCallback.doFrame(GuardedFrameCallback.java:31)
at com.facebook.react.modules.core.ReactChoreographer$ReactChoreographerDispatcher.doFrame(ReactChoreographer.java:136)
at com.facebook.react.modules.core.ChoreographerCompat$FrameCallback$1.doFrame(ChoreographerCompat.java:107)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:909)
at android.view.Choreographer.doCallbacks(Choreographer.java:723)
at android.view.Choreographer.doFrame(Choreographer.java:655)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:897)
at android.os.Handler.handleCallback(Handler.java:789)
at android.os.Handler.dispatchMessage(Handler.java:98)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6938)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374)
Fatal Exception: java.lang.NullPointerException: Attempt to invoke virtual method 'android.graphics.drawable.Drawable android.graphics.drawable.DrawableContainer$DrawableContainerState$ConstantStateFuture.get(android.graphics.drawable.DrawableContainer$DrawableContainerState)' on a null object reference
at android.graphics.drawable.DrawableContainer$DrawableContainerState.getChild(DrawableContainer.java:823)
at android.graphics.drawable.DrawableContainer.selectDrawable(DrawableContainer.java:452)
at android.graphics.drawable.StateListDrawable.onStateChange(StateListDrawable.java:104)
at android.graphics.drawable.Drawable.setState(Drawable.java:680)
at android.graphics.drawable.DrawableWrapper.onStateChange(DrawableWrapper.java:279)
at android.graphics.drawable.Drawable.setState(Drawable.java:680)
at android.graphics.drawable.LayerDrawable.onStateChange(LayerDrawable.java:1381)
at android.graphics.drawable.Drawable.setState(Drawable.java:680)
at android.view.View.drawableStateChanged(View.java:17003)
at android.widget.TextView.drawableStateChanged(TextView.java:3984)
at android.view.View.refreshDrawableState(View.java:17067)
at android.view.View.setPressed(View.java:7914)
at android.view.View.setPressed(View.java:7892)
at android.view.View.access$2900(View.java:708)
at android.view.View$CheckForTap.run(View.java:21187)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5451)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
@grabbou ΠΌΠΎΠΆΠ΅ΠΌ ΠΌΡ ΡΠ½ΠΎΠ²Π° ΠΎΡΠΊΡΡΡΡ ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ?
Π’Π°ΠΊΠ°Ρ ΠΆΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π·Π΄Π΅ΡΡ android 8.0 api 26
Π’ΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅ Ρ 0.54.2.
Π― ΡΡΠ·ΠΈΠ» Π΅Π³ΠΎ Π΄ΠΎ <TextInput>
, ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅ΠΌΠΎΠ³ΠΎ Π² FlatList. ΠΠΎΠ³Π΄Π° Ρ Π·Π°ΠΌΠ΅Π½ΡΡ ΡΡΠΎ Π½Π° <Text>
, ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΠΈΡΡΠ΅Π·Π°Π΅Ρ.
ΠΠΎΠΆΠ°Π»ΡΠΉΡΡΠ°, Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅Π΄ΠΈΡΠ΅ ΠΏΠΎΡΠ»Π΅Π΄Π½ΡΡ Π²Π΅ΡΡΠΈΡ, Π΄ΠΎΡΡΡΠΏΠ½ΡΡ ΡΠ΅ΠΉΡΠ°Ρ, ΠΈ Ρ ΠΎΡΠΊΡΠΎΡ Π΅Π΅ ΡΠ½ΠΎΠ²Π°.
Π’ΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅ Π·Π΄Π΅ΡΡ @ radko93
Android 8.1 API 27
"dependencies": {
"ΡΠ΅Π°Π³ΠΈΡΠΎΠ²Π°ΡΡ": "16.3.1",
"react-native": "0.55.1",
"ΡΠ΅Π°Π³ΠΈΡΠΎΠ²Π°ΡΡ-ΡΠΎΠ΄Π½ΠΎΠΉ-Π»ΠΈΠ½Π΅ΠΉΠ½ΡΠΉ Π³ΡΠ°Π΄ΠΈΠ΅Π½Ρ": "^ 2.4.0",
"ΡΠ΅Π°Π³ΠΈΡΠΎΠ²Π°ΡΡ-ΡΠΎΠ΄Π½ΡΠ΅-Π²Π΅ΠΊΡΠΎΡΠ½ΡΠ΅-ΠΈΠΊΠΎΠ½ΠΊΠΈ": "^ 4.6.0",
"ΡΠ΅Π°Π³ΠΈΡΠΎΠ²Π°ΡΡ-Π½Π°Π²ΠΈΠ³Π°ΡΠΈΡ": "^ 1.5.11"
},
ΠΠΎΠΏΡΡΠΊΠ° Π²ΡΠ·Π²Π°ΡΡ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ android.graphics.drawable.Drawable android.graphics.drawable.Drawable $ ConstantState.newDrawable (android.content.res.Resources) Π΄Π»Ρ ΡΡΡΠ»ΠΊΠΈ Π½Π° Π½ΡΠ»Π΅Π²ΠΎΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ
createAllFutures
DrawableContainer. Java: 875
getOpacity
DrawableContainer. Java: 1158
getOpacity
DrawableContainer. Java: 433
getOpacity
InsetDrawable. Java: 258
computeOpaqueFlags
ΠΠΎΡΠΌΠΎΡΡΠ΅ΡΡ. java: 15698
setBackgroundDrawable
ΠΠΎΡΠΌΠΎΡΡΠ΅ΡΡ. java: 20502
setBackground
ΠΠΎΡΠΌΠΎΡΡΠ΅ΡΡ. java: 20395
ΠΠΎΡΠΌΠΎΡΡΠ΅ΡΡ. java: 5238
TextView. Java: 826
Π Π΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ΅ΠΊΡΡ. Java: 88
Π Π΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ΅ΠΊΡΡ. java: 84
Π Π΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ΅ΠΊΡΡ. Java: 80
Π Π΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ΅ΠΊΡΡ. Java: 76
setThemedContext
ReactTextInputShadowNode. Java: 80
createView
UII ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ. java: 282
createView
UIManagerModule. Java: 366
Π²ΡΠ·ΡΠ²Π°ΡΡ
Method.java
Π²ΡΠ·ΡΠ²Π°ΡΡ
JavaMethodWrapper. java: 372
Π²ΡΠ·ΡΠ²Π°ΡΡ
JavaModuleWrapper. java: 160
Π±Π΅ΠΆΠ°ΡΡ
NativeRunnable.java
handleCallback
ΠΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ. Java: 790
dispatchMessage
ΠΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ. Java: 99
dispatchMessage
MessageQueueThreadHandler. java: 29
ΠΏΠ΅ΡΠ»Ρ
Looper. Java: 164
Π±Π΅ΠΆΠ°ΡΡ
MessageQueueThreadImpl. Java: 192
Π±Π΅ΠΆΠ°ΡΡ
ΠΠΈΡΡ. Java: 764
Π’Π° ΠΆΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°
package.json
"dependencies": {
"ΡΠ΅Π°Π³ΠΈΡΠΎΠ²Π°ΡΡ": "16.3.1",
"react-native": "0.55.2",
},
build.gradle
compileSdkVersion 26
buildToolsVersion "26.0.2"
minSdkΠΠ΅ΡΡΠΈΡ 16
Π’Π° ΠΆΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°.
java.lang.NullPointerException: Attempt to invoke virtual method 'android.graphics.drawable.Drawable android.graphics.drawable.Drawable$ConstantState.newDrawable(android.content.res.Resources)' on a null object reference
at android.graphics.drawable.DrawableContainer$DrawableContainerState.getChild(DrawableContainer.java:888)
at android.graphics.drawable.DrawableContainer.selectDrawable(DrawableContainer.java:466)
at android.graphics.drawable.StateListDrawable.onStateChange(StateListDrawable.java:104)
at android.graphics.drawable.Drawable.setState(Drawable.java:735)
at android.graphics.drawable.DrawableWrapper.onStateChange(DrawableWrapper.java:331)
at android.graphics.drawable.Drawable.setState(Drawable.java:735)
at android.view.View.drawableStateChanged(View.java:18038)
at android.widget.TextView.drawableStateChanged(TextView.java:4108)
at android.view.View.refreshDrawableState(View.java:18107)
at android.view.View.setPressed(View.java:8536)
at android.view.View.setPressed(View.java:8514)
at android.view.View.onTouchEvent(View.java:11262)
at android.widget.TextView.onTouchEvent(TextView.java:8489)
at com.facebook.react.views.textinput.ReactEditText.onTouchEvent(ReactEditText.java:162)
at android.view.View.dispatchTouchEvent(View.java:10054)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2663)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2336)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2663)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2336)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2663)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2336)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2663)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2336)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2663)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2336)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2663)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2336)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2663)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2336)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2663)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2336)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2663)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2336)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2663)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2336)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2663)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2336)
at com.android.internal.policy.DecorView.superDispatchTouchEvent(DecorView.java:432)
at com.android.internal.policy.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1841)
at android.app.Activity.dispatchTouchEvent(Activity.java:3233)
at com.android.internal.policy.DecorView.dispatchTouchEvent(DecorView.java:394)
at android.view.View.dispatchPointerEvent(View.java:10286)
at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:4514)
at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:4370)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3883)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3953)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3911)
at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:4053)
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3919)
at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:4110)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3883)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3953)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3911)
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3919)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3883)
at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:6359)
at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:6333)
at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:6288)
at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:6469)
at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:193)
at android.os.MessageQueue.nativePollOnce(Native Method)
at android.os.MessageQueue.next(MessageQueue.java:323)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:6295)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:900)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:790)
Android: 7.1.1
React-Native 75 Ρ.
Π’Π° ΠΆΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°.
ΡΠ° ΠΆΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°, Π² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π΅Π½Π½ΠΎΠΉ ΡΡΠ΅Π΄Π΅ οΌ ΠΌΠΎΠ΅ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ - HUAWEI (LLD-AL10) 8.0.0, Π² Π½Π°ΡΡΠΎΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ React Native 0.46.2, ΡΠΏΠ°ΡΠΈΠ±ΠΎ
Π’Π°ΠΊΠ°Ρ ΠΆΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΉ Π²Π΅ΡΡΠΈΠΈ react-native (0.55.3). ΠΡΠΎΠ±Π»Π΅ΠΌΠ°, ΠΏΠΎΡ ΠΎΠΆΠ΅, ΡΠ²ΡΠ·Π°Π½Π° Ρ TextInput Π² FlatList, ΠΊΠ°ΠΊ ΡΠΏΠΎΠΌΠΈΠ½Π°Π»ΠΎΡΡ Π²ΡΡΠ΅. ΠΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ Π² android 8.0 ΠΈ 8.1. ΠΡΡΡ Π»ΠΈ ΠΎΠ±Ρ ΠΎΠ΄Π½ΡΠ΅ ΠΏΡΡΠΈ, ΡΡΠΎΠ±Ρ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ ΡΡΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ?
Π― ΠΌΠΎΠ³Ρ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ ΡΡΡ ΠΎΡΠΈΠ±ΠΊΡ, ΡΠΎΠ·Π΄Π°Π² Π½ΠΎΠ²ΡΠΉ ΠΏΡΠΎΠ΅ΠΊΡ React Native Ρ init-native init ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ² App.js Π½Π°
import React, { Component } from 'react';
import {
StyleSheet,
TextInput,
View
} from 'react-native';
type Props = {};
export default class App extends Component<Props> {
render() {
const inputs = Array.apply(null, Array(256)).map((_, i) => i)
return (
<View>
{inputs.map(i => <TextInput key={i} />)}
</View>
);
}
}
Π― Π·Π°ΠΏΡΡΠΊΠ°Π» ΡΡΠΎ Π½Π° Galaxy S8 Ρ Android 8.0.0 ΠΈΠ· MacOS 10.13.3.
"dependencies": {
"react": "16.3.1",
"react-native": "0.55.3"
},
Π― Π½Π΅ Π·Π½Π°Ρ, Π½Π΅ ΡΠ²ΡΠ·Π°Π½Π° Π»ΠΈ ΠΎΡΠΈΠ±ΠΊΠ° Π½Π°ΠΏΡΡΠΌΡΡ Ρ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎΠΌ TextInputs, Π½ΠΎ ΡΡΠΎ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ ΡΡΡ ΠΎΡΠΈΠ±ΠΊΡ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π½Π°Π΄Π΅ΠΆΠ½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ. ΠΡΠΈ 128 Π²Ρ ΠΎΠ΄Π°Ρ Ρ Π½Π΅ ΠΏΠΎΠ»ΡΡΠ°Π» ΡΡΡ ΠΎΡΠΈΠ±ΠΊΡ ΠΏΡΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΡΡΠΊΠ΅, Π½ΠΎ ΠΏΠΎΡΠ»Π΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΏΠ΅ΡΠ΅Π·Π°Π³ΡΡΠ·ΠΎΠΊ ΠΎΠ½Π° ΠΏΠΎΡΠ²Π»ΡΠ»Π°ΡΡ. ΠΡΠΈ 256 Π³ΠΎΠ»ΡΡ TextInputs Ρ Π½Π΅ Π΄ΡΠΌΠ°Ρ, ΡΡΠΎ ΡΠΌΠΎΠ³ Π·Π°ΠΏΡΡΡΠΈΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π±Π΅Π· ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΡ ΠΎΡΠΈΠ±ΠΊΠΈ. Π― ΡΠ°ΠΊΠΆΠ΅ Π·Π°ΠΌΠ΅ΡΠΈΠ», ΡΡΠΎ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΌΠ΅ΠΆΠ΄Ρ TextInputs, ΠΏΠΎΡ ΠΎΠΆΠ΅, ΡΠ½ΠΈΠΆΠ°Π΅Ρ Π²Π΅ΡΠΎΡΡΠ½ΠΎΡΡΡ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΡΡΠΎΠΉ ΠΎΡΠΈΠ±ΠΊΠΈ, ΠΏΠΎΡΡΠΎΠΌΡ, ΡΠΊΠΎΡΠ΅Π΅ Π²ΡΠ΅Π³ΠΎ, ΠΎΠ½Π° Π½Π΅ ΡΠ²ΡΠ·Π°Π½Π° Π½Π°ΠΏΡΡΠΌΡΡ Ρ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎΠΌ TextInputs. Π― ΠΏΡΠΎΠ±ΠΎΠ²Π°Π» ΡΡΠΎ Π² ΡΠ²ΠΎΠ΅ΠΌ ΡΠ΅ΠΊΡΡΠ΅ΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ, ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠΎΡΠ΅Π½ TextInputs Π½Π° Π½Π°ΡΠ°Π»ΡΠ½ΡΠΉ ΡΠΊΡΠ°Π½ ΡΠ°ΠΊΠΆΠ΅ Π²ΡΠ·Π²Π°Π»ΠΎ ΡΡΡ ΠΎΡΠΈΠ±ΠΊΡ, Π½ΠΎ Π΄ΡΡΠ³ΠΈΠ΅ ΠΌΠΎΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ Ρ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΡΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎΠΌ TextInputs, Π·Π°ΠΊΠ»ΡΡΠ΅Π½Π½ΡΡ Π² Π΄ΡΡΠ³ΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ, ΠΏΠΎΡ ΠΎΠΆΠ΅, Π½Π΅ Π²ΡΠ΅Π³Π΄Π° Π²ΡΠ·ΡΠ²Π°ΡΡ ΡΡΡ ΠΎΡΠΈΠ±ΠΊΡ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Ρ ΠΌΠ΅Π½Ρ Π΅ΡΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π² ΠΌΠΎΠ΅ΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ .
Π£ ΠΌΠ΅Π½Ρ ΡΠ°ΠΊΠ°Ρ ΠΆΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°. Π― Π·Π°ΠΏΡΡΠΊΠ°Π» ΡΡΠΎ Π½Π° Huawei P10 Ρ Android 8.0.0.
"react": "^16.2.0",
"react-native": "^0.55.0",
Π‘ΠΊΡΠΈΠ½ΡΠΎΡ
ΠΠΎΡ ΠΎΠΆΠ΅, ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π² TextInputs. ΠΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π½Π° ΠΌΠΎΠ΅ΠΌ Huawei P10 (Android 8.0.0). ΠΡΡΡ Π»ΠΈ ΡΠΆΠ΅ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ?
Android: 7.1.1
"react-native": "0.53.3",
Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ, ΡΡΠΎ ΡΠ°Π·ΠΌΠ΅ΡΡΠΈΠ»ΠΈ ΡΡΠΎ! ΠΠΎΡ ΠΎΠΆΠ΅, Π²Π°ΡΠ° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΠΌΠΎΠΆΠ΅Ρ ΠΎΡΠ½ΠΎΡΠΈΡΡΡΡ ΠΊ Π±ΠΎΠ»Π΅Π΅ ΡΡΠ°ΡΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ React Native. ΠΠΎΠΆΠ΅ΡΠ΅ Π»ΠΈ Π²Ρ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π² ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΉ Π²Π΅ΡΡΠΈΠΈ v0.55 ?
Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ Π·Π° Π²Π°Ρ Π²ΠΊΠ»Π°Π΄.
Π― ΡΡΠΎΠ»ΠΊΠ½ΡΠ»ΡΡ Ρ ΡΠΎΠΉ ΠΆΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ. ΠΡΠΎ ΡΠ²ΡΠ·Π°Π½ΠΎ Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠΌ TextInput. ΠΠ°ΠΆΠ΅ ΠΎΠ΄ΠΈΠ½ TextInput, ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅ΠΌΡΠΉ Π½Π° ΡΠΊΡΠ°Π½Π΅, Π²ΡΠ·ΡΠ²Π°Π΅Ρ ΡΡΡ ΠΎΡΠΈΠ±ΠΊΡ. ΠΡΡΡ Π»ΠΈ ΠΎΠ±Ρ ΠΎΠ΄Π½ΡΠ΅ ΠΏΡΡΠΈ?
ΡΠ΅Π°Π³ΠΈΡΠΎΠ²Π°ΡΡ-ΡΠΎΠ΄Π½ΠΎΠΉ: 0,55
ΡΠ΅Π°Π³ΠΈΡΠΎΠ²Π°ΡΡ: 16.3.1
Π― ΠΌΠ΅Π½ΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ReactEditText Π½Π° Β«ΡΡΠΏΠ΅ΡΒ», ΠΏΠΎΡ
ΠΎΠΆΠ΅, Π½Π΅ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ,
Π½ΠΎ Π·Π°ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠΈΡΡΠΉΡΠ΅ Β«underlineColorAndroidΒ»
https://github.com/yuanboGeng/react-native/commit/36f7949f9a3e9c1f3b10df43a9f495f9f8712a1f
ΡΠ΅Π°Π³ΠΈΡΠΎΠ²Π°ΡΡ-ΡΠΎΠ΄Π½ΠΎΠΉ: 0.53.3
ΡΠ΅Π°Π³ΠΈΡΠΎΠ²Π°ΡΡ: 16.2.0
ΠΡΠΎ Π½Π°ΡΠ°Π»ΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡΡ Π΄Π»Ρ ΠΌΠ΅Π½Ρ ΠΏΠΎΡΠ»Π΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΠΌΠΎΠ΅Π³ΠΎ ΡΠΌΡΠ»ΡΡΠΎΡΠ° Π΄ΠΎ ΡΡΠΎΠ²Π½Ρ API 26 Ρ ΡΡΠΎΠ²Π½Ρ API 21.
Π£ ΠΌΠ΅Π½Ρ ΡΡΠ° ΠΎΡΠΈΠ±ΠΊΠ° ΠΏΠΎΡΠ²Π»ΡΠ»Π°ΡΡ Π±Π΅Π· ΠΏΡΠΈΡΠΈΠ½Ρ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ. Π― ΠΎΡΠΈΡΡΠΈΠ» ΡΠ²ΠΎΠΈ ΠΏΠ°ΠΏΠΊΠΈ / build ΠΈ ΡΠ½ΠΎΠ²Π° Π·Π°ΠΏΡΡΡΠΈΠ» run-android
. ΠΡΠΎΠ±Π»Π΅ΠΌΠ° ΠΈΡΡΠ΅Π·Π»Π°. ΠΡΠ΅Π½Ρ ΡΡΡΠ°Π½Π½ΠΎ. Π― Π½Π°Π΄Π΅ΡΡΡ, ΡΡΠΎ Π΄Π»Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ
ΠΈΠ· Π²Π°Ρ ΡΡΠΎ ΡΠ΅ΡΠΈΡ ΡΠΈΡΡΠ°Ρ ΡΠ±ΠΎΡΠΊΠ°.
ΠΠΌΠ΅Ρ ΡΠ°ΠΊΡΡ ββΠΆΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ. ΠΠ΄Π½ΠΎ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠ΅ ΡΠ°Π·Π»ΠΈΡΠΈΠ΅ - Π² ΠΌΠΎΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ Ρ Π²ΠΊΠ»Π°Π΄ΡΠ²Π°Ρ TextInputs Π²Π½ΡΡΡΡ VirtualizedList (ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΈΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ FlatList), ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ ΡΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° Ρ Π½Π°ΡΠΈΠ½Π°Ρ ΠΏΡΠΎΠΊΡΡΡΠΈΠ²Π°ΡΡ ΡΡΠΎΡ ΡΠΏΠΈΡΠΎΠΊ, Π΄Π°ΠΆΠ΅ ΡΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° Ρ ΠΏΠΎΠ»ΡΡΠ°Ρ Π΅Π³ΠΎ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠ΅ΡΠΈΠΎΠ΄ΠΈΡΠ΅ΡΠΊΠΈ, Π° Π½Π΅ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ. ΠΠΎΠ΄ΠΎΠ±Π½ΠΎ Π΄ΡΡΠ³ΠΈΠΌ, ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π΅Π½Π½ΠΎΠΉ ΡΡΠ΅Π΄Π΅, ΠΏΠΎΡΡΠΎΠΌΡ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΡΡΠΊ ΡΠΏΠ°ΠΊΠΎΠ²ΡΠΈΠΊΠ° Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½.
Π‘ΡΠ΄Ρ ΠΏΠΎ Π½Π΅ΠΊΠΎΡΠΎΡΡΠΌ ΠΏΠΎΠΈΡΠΊΠ°ΠΌ, ΠΏΠΎΡ
ΠΎΠΆΠ΅, ΡΡΠΎ ΡΡΠΎ ΡΠ²ΡΠ·Π°Π½ΠΎ ΡΠΎ ΡΡΠ°ΡΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ Π² ΡΠ°ΠΌΠΎΠΌ Android: https://issuetracker.google.com/issues/37068452
ΠΡΠ»ΠΈ ΡΡΠΎ ΠΎΡΠ½ΠΎΠ²Π½Π°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°, Π΅Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΅ΡΠΈΡΡ, ΠΏΡΠΎΡΡΠΎ ΠΎΠ±Π½ΠΎΠ²ΠΈΠ² compileSdk ΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΠΈΠ΅ Π²Π΅ΡΡΠΈΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π² ΠΏΡΠΎΠ΅ΠΊΡΠ΅ RN. Π₯ΠΎΡΡ ΠΏΠΎΠ½ΡΡΠΈΡ Π½Π΅ ΠΈΠΌΠ΅Ρ, ΡΡΠΎ ΡΠ°ΠΊΠΎΠ΅ LoE.
ΠΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅: ΠΏΠΎΠΏΡΡΠΊΠ° Π·Π°ΡΡΠ°Π²ΠΈΡΡ ΠΏΠΎΠ΄ΠΏΡΠΎΠ΅ΠΊΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π±ΠΎΠ»Π΅Π΅ Π²ΡΡΠΎΠΊΡΡ Π²Π΅ΡΡΠΈΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² ΡΠ±ΠΎΡΠΊΠΈ ΠΈ compileSdk Π½Π΅ ΡΠ΅ΡΠΈΠ»Π° ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π΄Π»Ρ ΠΌΠΎΠ΅Π³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ°, ΠΊΠ°ΠΊ ΠΎΠΏΠΈΡΠ°Π½ΠΎ Π² ΡΡΠΎΠΌ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΈ SO . ΠΠ΅ ΡΠ²Π΅ΡΠ΅Π½, ΡΡΠΎ Ρ ΠΏΡΠΎΡΡΠΎ Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΠ» ΡΡΠΈ Π±ΠΎΠ»Π΅Π΅ Π²ΡΡΠΎΠΊΠΈΠ΅ Π²Π΅ΡΡΠΈΠΈ, Π΅ΡΠ»ΠΈ ΠΌΠΎΡ Π½Π°ΡΡΡΠΎΠΉΠΊΠ° ΡΠ±ΠΎΡΠΊΠΈ Π½Π΅ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅Ρ RN ΠΊΠ°ΠΊ ΠΏΠΎΠ΄ΠΏΡΠΎΠ΅ΠΊΡ ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΈΠ»ΠΈ ΡΡΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π½Π΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠ΅Π΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π·Π΄Π΅ΡΡ.
Π ΠΠΠΠΠ’ΠΠ ΠΠΠΠ’Π¬ 2: ΠΠΎΡ ΠΎΠΆΠ΅, ΡΡΠΎ ReactEditText Π΄Π°ΠΆΠ΅ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Π²Π΅ΡΡΠΈΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ EditText (ΠΊΠΎΡΠΎΡΠ°Ρ Π±ΡΠ»Π° Π±Ρ AppCompatEditText), ΡΡΠΎ ΠΎΠ±ΡΡΡΠ½ΡΠ΅Ρ, ΠΏΠΎΡΠ΅ΠΌΡ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ Π΄Π°Π»ΠΎ. Π― ΠΈΠ·ΡΡΠ°Ρ ΡΡΠΎ - ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π΅ΡΠ΅ ΠΏΠ°ΡΠ° ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΉ, ΡΠ΅ΠΌ ΠΏΡΠΎΡΡΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ, ΡΡΠΎΠ±Ρ Π·Π°ΡΡΠ°Π²ΠΈΡΡ ΡΡΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡ, Π½ΠΎ ΡΡΠΎ _ΠΌΠΎΠΆΠ΅Ρ_ Π±ΡΡΡ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΌ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΡΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ.
Π ΠΠΠΠΠ’ΠΠ ΠΠΠΠ’Π¬ 3: ΠΡΠΎ Π½Π΅ Π±ΡΠ»ΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ. Π― Π±ΠΎΠ»ΡΡΠ΅ Π½Π΅ ΡΠ²Π΅ΡΠ΅Π½, ΡΡΠΎ ΡΡΠ° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΡΠ°ΠΊΠ°Ρ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΡΠ²ΡΠ·Π°Π½Π½ΠΎΠ³ΠΎ AOSP.
Π― ΠΌΠΎΠ³Ρ ΡΠΊΠ°Π·Π°ΡΡ, ΡΡΠΎ, ΠΏΠΎΡ
ΠΎΠΆΠ΅, Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, Π² ΠΊΠ°ΠΊΠΎΠΉ Π²ΠΈΠ΄ ScrollView Π²Ρ ΠΏΠΎΠΌΠ΅ΡΠ°Π΅ΡΠ΅ ΡΠ²ΠΎΠΉ ΡΠ΅ΠΊΡΡ - Ρ ΡΠΌΠΎΠ³ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ ΠΊΠ°ΠΊ Π² VirtualizedList, ΡΠ°ΠΊ ΠΈ Π² ScrollView, ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π² ΡΡΠΎΠΌ ΠΏΠΎΡΠΎΠΊΠ΅ ΡΠ΄Π΅Π»Π°Π»ΠΈ ΡΡΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ FlatList.
Ρ ΠΌΠ΅Π½Ρ ΡΠ°ΠΊΠΎΠΉ ΠΆΠ΅ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π΅
Π― ΡΠΎΠΆΠ΅ ΡΡΠΎΠ»ΠΊΠ½ΡΠ»ΡΡ Ρ ΡΡΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ. ΠΠ°ΠΏΡΡΠΊ cd android ; ./gradlew clean ; cd .. ; react-native run-android
ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π΄Π»Ρ ΠΌΠ΅Π½Ρ, ΠΊΠ°ΠΊ ΡΠΊΠ°Π·Π°Π» @mbret (ΡΠΏΠ°ΡΠΈΠ±ΠΎ!)
ΠΡΠ»ΠΈΡΠ½ΠΎ, Π½ΠΎ ΠΊΠ°ΠΊ Π½Π°ΡΡΠ΅Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΡΠ°Π±ΠΎΡΠ°ΡΡΠΈΡ Ρ ΡΠ΅Π°Π»ΡΠ½ΡΠΌΠΈ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°ΠΌΠΈ? : |
ΠΠ·Π²ΠΈΠ½ΠΈΡΠ΅ @ahanusek , Ρ Π½Π΅ Π³ΠΎΠ²ΠΎΡΡ, ΡΡΠΎ ΡΡΠΎ ΡΠ΅ΡΠ°Π΅Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, Ρ ΠΏΡΠΎΡΡΠΎ Π³ΠΎΠ²ΠΎΡΡ, ΡΡΠΎ ΠΏΡΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ ΡΡΠΎ ΡΡΠ°Π±ΠΎΡΠ°Π»ΠΎ Π΄Π»Ρ ΠΌΠ΅Π½Ρ (Π² Π½Π°Π΄Π΅ΠΆΠ΄Π΅, ΡΡΠΎ ΡΡΠΎ ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ ΠΊΠΎΠΌΡ-ΡΠΎ Π΄ΡΡΠ³ΠΎΠΌΡ).
ΠΠΎ Π΄Π°ΠΆΠ΅ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΡΠΎ Π½Π΅ Π²ΡΡ ΠΎΠ΄. Π₯ΠΎΡΠΎΡΠΎ, Π²Ρ ΠΎΡΠΈΡΠ°Π΅ΡΠ΅ ΡΠ²ΠΎΡ ΡΠ±ΠΎΡΠΊΡ, ΡΠ½ΠΎΠ²Π° Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π½ΠΎ Π΅ΡΠ»ΠΈ Π²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ Π²Π²ΠΎΠ΄ Β«Ρ ΡΡΡΠ΄ΠΎΠΌΒ», Π²Ρ Π²ΡΠ΅ ΡΠ°Π²Π½ΠΎ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ½ΠΎΠ²Π° ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΡΡ ΠΎΡΠΈΠ±ΠΊΡ.
@ahanusek ΠΠ°, Ρ ΡΠΎΠ³Π»Π°ΡΠ΅Π½ Ρ Π²Π°ΠΌΠΈ, ΠΈ Π½ΠΈ Π² ΠΊΠΎΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ Π½Π΅ ΡΠΏΠΎΡΡ Ρ Π²Π°ΠΌΠΈ. ΠΡΠΎ Π½Π΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅, Π½ΠΎ Π΄Π»Ρ ΠΌΠ΅Π½Ρ, ΠΈ Π½Π° Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ ΠΎΠ½ΠΎ ΡΡΠ°Π±ΠΎΡΠ°Π»ΠΎ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡΡ ΠΌΠ½Π΅ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΡ
Π’Π°ΠΊΠΆΠ΅ Π²ΠΈΠΆΡ ΡΡΠΎ, v0.55.4:
Π‘ΠΎΠ²Π΅ΡΡΠ΅Π½Π½ΠΎ ΡΠ²Π΅ΡΠ΅Π½, ΡΡΠΎ Ρ ΠΌΠ΅Π½Ρ Π½Π΅Ρ TextField Π² FlatList ΠΈΠ»ΠΈ VirtualizedList, fwiw. ΠΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π² Π½Π°ΡΠ΅ΠΉ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π΅Π½Π½ΠΎΠΉ ΡΠ±ΠΎΡΠΊΠ΅.
ΠΠΈΠ΄Ρ ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π² v0.55.4
. Π Π΄Π°, ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ TextInput
Π² ΡΠΏΠΈΡΠΊΠ΅.
ΠΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π² React 0.55. Π‘Π»Π΅Π΄ΡΡΡΠΈΠΉ
Π’Π°ΠΊΠΆΠ΅ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π² react native 0.55, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π²Π²ΠΎΠ΄ Π² ΠΏΠ»ΠΎΡΠΊΠΎΠΌ ΡΠΏΠΈΡΠΊΠ΅.
ΠΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΡ Π·Π΄Π΅ΡΡ ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ Π½Π° ΡΠ»ΡΡΠ°ΠΉ, Π΅ΡΠ»ΠΈ Π»ΡΠ΄ΠΈ Π½Π΅ ΡΠ²ΠΈΠ΄ΡΡ ΠΌΠΎΠΉ ΠΎΡΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ:
Π― ΠΌΠΎΠ³Ρ ΡΠΊΠ°Π·Π°ΡΡ, ΡΡΠΎ, ΠΏΠΎΡ
ΠΎΠΆΠ΅, Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, Π² ΠΊΠ°ΠΊΠΎΠΉ Π²ΠΈΠ΄ ScrollView Π²Ρ ΠΏΠΎΠΌΠ΅ΡΠ°Π΅ΡΠ΅ ΡΠ²ΠΎΠΉ ΡΠ΅ΠΊΡΡ - Ρ ΡΠΌΠΎΠ³ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ ΠΊΠ°ΠΊ Π² VirtualizedList, ΡΠ°ΠΊ ΠΈ Π² ScrollView, ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π² ΡΡΠΎΠΌ ΠΏΠΎΡΠΎΠΊΠ΅ ΡΠ΄Π΅Π»Π°Π»ΠΈ ΡΡΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ FlatList.
ΠΠ»ΠΈ, Π³ΠΎΠ²ΠΎΡΡ ΠΈΠ½Π°ΡΠ΅, ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΡΠ²ΠΎΠ΄ΠΈΡΡΡ ΠΊ
RN Crashes when loading a very large number of TextInputs. Usually this happens in a ScrollView (or some descended component class of one), but one person got it to happen in a plain View
Π’Π° ΠΆΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°
Π― ΡΠΎΠΆΠ΅ ΡΡΠΎΠ»ΠΊΠ½ΡΠ»ΡΡ Ρ ΡΠΎΠΉ ΠΆΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ.
ΠΠ°ΠΊ Π½ΠΈ ΡΡΡΠ°Π½Π½ΠΎ, ΡΡΠΎ Π½Π°ΡΠ°Π»ΠΎΡΡ ΡΠΎ ΠΌΠ½ΠΎΠΉ Π½Π΅ ΡΠ°Π½ΡΡΠ΅ ΠΏΡΠΎΡΠ»ΠΎΠΉ Π½ΠΎΡΠΈ, ΠΈ Ρ ΡΠ΅Π½Π΄Π΅ΡΠΈΠ» TextInputs ΠΎΠ΄Π½ΠΈΠΌ ΠΈ ΡΠ΅ΠΌ ΠΆΠ΅ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ ΡΠΆΠ΅ Π±ΠΎΠ»Π΅Π΅ ΠΌΠ΅ΡΡΡΠ° Π² ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅.
Android Π²Π΅ΡΡΠΈΠΈ 9
Π Π΅Π°Π³ΠΈΡΠΎΠ²Π°ΡΡ "16.3.1"
React-Native "~ 0.55.2"
ΠΡ ΡΠ°ΠΊΠΆΠ΅ ΡΡΠΎΠ»ΠΊΠ½ΡΠ»ΠΈΡΡ Ρ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ Π² Π½Π°ΡΠ΅ΠΌ ΠΊΠΎΠ΄Π΅
ΠΡΡΠ½Π°Π»Ρ ΡΠ±ΠΎΠ΅Π²:
ΠΠ΅ΡΡΡΡΠ°Π½ΠΈΠΌΠΎΠ΅ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅: java.lang.NullPointerException: ΠΏΠΎΠΏΡΡΠΊΠ° Π²ΡΠ·Π²Π°ΡΡ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ android.graphics.drawable.Drawable android.graphics.drawable.Drawable $ ConstantState.newDrawable (android.content.res.Resources) Π΄Π»Ρ ΡΡΡΠ»ΠΊΠΈ Π½Π° Π½ΡΠ»Π΅Π²ΠΎΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ
Π² android.graphics.drawable.DrawableContainer $ DrawableContainerState.createAllFutures (DrawableContainer.java:875)
Π² android.graphics.drawable.DrawableContainer $ DrawableContainerState.getOpacity (DrawableContainer.java:1158)
Π² android.graphics.drawable.DrawableContainer.getOpacity (DrawableContainer.java:433)
Π² android.graphics.drawable.InsetDrawable.getOpacity (InsetDrawable.java:258)
Π² android.view.View.computeOpaqueFlags (View.java:16791)
Π² android.view.View.setBackgroundDrawable (View.java:21710)
Π² android.view.View.setBackground (View.java:21603)
Π² android.view.View.
Π² android.widget.TextView.
Π² android.widget.EditText.
Π² android.widget.EditText.
Π² android.widget.EditText.
Π² android.widget.EditText.
Π² com.facebook.react.views.textinput.ReactEditText.
Π ΡΠ΅ΠΌ, ΠΊΠ°ΠΆΠ΅ΡΡΡ, ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°?
ΠΡΡΠ°Π»ΡΡ ΠΏΡΠΎΠ²Π΅ΡΡΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°ΡΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠΉ:
- Π±ΠΎΠ»Π΅Π΅ 1000 ΡΠ°Π±ΠΎΡ edittext Π² ΡΠΈΡΡΠΎΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Π΄Π»Ρ Android
- ΠΎΠΊΠΎΠ»ΠΎ 200 ReactTextInput Π½Π΅ ΡΠ°Π±ΠΎΡΠ°ΡΡ, ΠΊΠ°ΠΊ ΡΠΊΠ°Π·Π°Π½ΠΎ Π·Π΄Π΅ΡΡ
ΠΠ°ΠΊ ΠΌΡ ΡΡΠΎ ΡΠ΅ΡΠΈΠ»ΠΈ ΠΈΠ»ΠΈ Π·Π°ΡΡΠ°Π²ΠΈΠ»ΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΡ?
[1] ΠΠ΅ΡΠ΅ΠΌΠ΅ΡΡΠΈΡΠ΅ Π½ΠΎΠ²ΡΠΉ Π²ΡΠ·ΠΎΠ² EditText (context) Π² ΠΏΠΎΡΠΎΠΊ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° ΠΈ ΠΈΠ·ΠΌΠ΅ΡΡΡΠ΅ Π°ΡΠΈΠ½Ρ
ΡΠΎΠ½Π½ΠΎΡΡΡ ShadowNode, Π½ΠΎ ΠΎΠΆΠΈΠ΄Π°Ρ, ΠΏΠΎΠΊΠ° ΡΡΠΎΡ ΠΎΠ±ΡΠ΅ΠΊΡ EditText Π½Π΅ Π±ΡΠ΄Π΅Ρ ΡΠΎΠ·Π΄Π°Π½ Π² ΠΏΠΎΡΠΎΠΊΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° - Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΠ°Π» ΡΠ΅Π½Π΅Π²ΠΎΠΉ ΡΠ·Π΅Π» setThemedContext ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ
ΠΠ΅Π΄ΠΎΡΡΠ°ΡΠΊΠΈ: ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π½ΠΈΡΠΎΠΊ Π½Π° ΠΊΠ°ΠΆΠ΄ΡΠΉ Π Π’Π.
[2] Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ EditText, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π½Π°Π΄ΡΠ²Π½ΠΎΠΉ ΠΌΠ°ΠΊΠ΅Ρ Π² ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠΌ ΠΌΠΎΠ΄ΡΠ»Π΅, ΡΠΊΠ°Π·Π°Π² Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ null Π΄Π»Ρ ΡΠΎΠ½Π°, ΠΈ ΡΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΡΠ°Π· ΡΠΎΠ½, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΈΡΠΎΠ²Π°ΡΡ, ΡΠΎΠ·Π΄Π°Π² EditText Π² ΠΏΠΎΡΠΎΠΊΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° ΠΈ ΠΊΡΡΠΈΡΡΡ Π΅Π³ΠΎ ΡΠΎΠ½, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΈΡΠΎΠ²Π°ΡΡ Π½Π° ΡΡΠΎΠ²Π½Π΅ shadowNode. ΠΡΠΎΡ drawable ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΡΠΎΠ½Π° dummyEditTexts, ΡΠΎΠ·Π΄Π°Π½Π½ΠΎΠ³ΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π½Π°Π΄ΡΠ²Π°ΡΠ΅Π»Ρ ΠΌΠ°ΠΊΠ΅ΡΠ°, ΡΡΠΎΠ±Ρ ΠΌΠ΅ΡΠ° ΡΡΠΈΡΡΠ²Π°Π»Π° Π΄ΠΎΡΡΡΠΏΠ½ΡΠ΅ Π΄Π»Ρ ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΎΡΡΡΡΠΏΡ Π³ΡΠ°Π½ΠΈΡΡ. Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΌΠ΅ΡΠ΅ Π½ΡΠΆΠ½ΠΎ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΡΠ°Π· Π΄ΠΎΠΆΠ΄Π°ΡΡΡΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Drawable
Π― ΠΏΡΠΎΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π» ΠΎΠ±Π°, ΠΈ ΠΎΠ½ΠΈ ΠΎΡΠ»ΠΈΡΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π΄Π»Ρ 1024 ReactTextInput.
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅. Π‘ΡΠ΄Ρ ΠΏΠΎ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°ΠΌ ΡΠ°ΡΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ, ΡΡΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π½Π΅ ΠΊΠ°ΠΆΠ΅ΡΡΡ ΡΠ°ΠΌΡΠΌ ΡΠ»Π΅Π³Π°Π½ΡΠ½ΡΠΌ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ, Π½ΠΎ ΠΎΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Ρ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΠΌΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡΠΌΠΈ ΠΈ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΆΠ΄Π°Π΅Ρ Π°Π½Π°Π»ΠΈΠ· ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ.
ΠΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈ ΠΊΡΠΈΡΠΈΠΊΠ° ΠΏΡΠΈΠ²Π΅ΡΡΡΠ²ΡΡΡΡΡ!
ΠΠΎΠ΄ ΡΠ΅Π½Π΅Π²ΠΎΠ³ΠΎ ΡΠ·Π»Π°:
ΠΏΠ°ΠΊΠ΅Ρ
import android.content.Context;
import android.graphics.drawable.Drawable;
import android.os.Build;
import android.text.Layout;
import android.view.LayoutInflater;
import android.view.ViewGroup;
import android.widget.EditText;
import com.facebook.infer.annotation.Assertions;
import com.facebook.react.bridge.JSApplicationIllegalArgumentException;
import com.facebook.react.common.annotations.VisibleForTesting;
import com.facebook.react.uimanager.Spacing;
import com.facebook.react.uimanager.ThemedReactContext;
import com.facebook.react.uimanager.UIViewOperationQueue;
import com.facebook.react.uimanager.annotations.ReactProp;
import com.facebook.react.views.text.ReactBaseTextShadowNode;
import com.facebook.react.views.text.ReactTextUpdate;
import com.facebook.react.views.textinput.ReactTextInputLocalData;
import com.facebook.react.views.view.MeasureUtil;
ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ com.facebook.yoga.YogaMeasureFunction;
ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ com.facebook.yoga.YogaMeasureMode;
ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ com.facebook.yoga.YogaMeasureOutput;
ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ com.facebook.yoga.YogaNode;
ΠΈΠΌΠΏΠΎΡΡ
import javax.annotation.Nullable;
// ΠΠ ΠΠΠΠ§ΠΠΠΠ: ΡΡΠΎΡ ΠΊΠ»Π°ΡΡ Π½Π΅ ΡΠΈΠ»ΡΠ½ΠΎ ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ ΠΎΡ ReactTextInputShadowNode, ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΠΎΠ³ΠΎ Π² ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·ΠΌΠ΅
// ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° ΡΠ΅ΠΌΡ ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΌΠ΅ΡΡ
ΠΎΡΠΊΡΡΡΡΠΉ ΠΊΠ»Π°ΡΡ ReactTextInputShadowNode ΡΠ°ΡΡΠΈΡΡΠ΅Ρ ReactBaseTextShadowNode ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅Ρ YogaMeasureFunction
{
@VisibleForTesting
ΠΎΠ±ΡΠ΅Π΄ΠΎΡΡΡΠΏΠ½Π°Ρ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠ°Ρ ΠΊΠΎΠ½Π΅ΡΠ½Π°Ρ ΡΡΡΠΎΠΊΠ° PROP_TEXT = "ΡΠ΅ΠΊΡΡ";
ΡΠ°ΡΡΠ½ΡΠΉ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Drawable sDummyEditTextBackgroundDrawable = null;
private int mMostRecentEventCount = UNSET;
private <strong i="13">@Nullable</strong> EditText mDummyEditText;
private <strong i="14">@Nullable</strong> ReactTextInputLocalData mLocalData;
// Represents the {<strong i="15">@code</strong> text} property only, not possible nested content.
private <strong i="16">@Nullable</strong> String mText = null;
public ReactRichTextInputShadowNode()
{
mTextBreakStrategy = (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) ?
0 : Layout.BREAK_STRATEGY_SIMPLE;
setMeasureFunction(this);
}
<strong i="17">@Override</strong>
public void setThemedContext(final ThemedReactContext themedContext)
{
super.setThemedContext(themedContext);
// Inflating with layout using background as null because new EditText(context) call
// can cause NullPointer Exception during a race scenario of UI thread performing EditText
// creation with background at the same time
// BACKGROUND:
// ---------------
// SparseArray is not threadsafe and at the same time there is logic of gc() inside it
// SparseArray is used by DrawableContainerState and new DrawableContainerState may get
// created using the an existing constant state's drawable futures(this is SparseArray) by
// cloning
// The above is a recipe for a multi-threaded null pointer exception and it happens as below
// - Native module thread working on RTI shadow node creation and its lifecycle does a
// new EditText(reactThemedContext) which in turn results in background drawable to be
// set and finally invoking the SparseArray thread unsafe code
// - UI thread meanwhile could be used to create the display EditText of some other RTI
// at the same time leading up to the same SparseArray thread unsafe code
// - Null pointer exception happens when the gc() is invoked and simultaneously clone is
// being done for the same object giving rise to a partially gc-ed object. Something
// like an item from values array was removed and null-ed but the noOfItems flag is yet
// to be updated, so cloned object has one item less than specified in noOfItems flag
// and iteration can cause null pointer exception for the deleted index.
//
// Solution:
// ------------
// Create EditText using layout inflater on Native module while specifying null for
// background and create only once the background drawable by creating an EditText on UI
// thread and caching its background drawable at shadowNode level. In this case measure only
// needs to wait once for the Drawable creation
// Shortcomings: Ideally we would like to create the Drawable on the same Native module
// thread but not able to access android.internal stylable ids to
// approach this solution
LayoutInflater sInflater =
(LayoutInflater) themedContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
EditText editText =
(EditText) sInflater.inflate(R.layout.dummy_edit_text, null, false);
// creating the EditText theme background on UI thread async to prevent above mentioned race
// scenario
if (sDummyEditTextBackgroundDrawable == null) {
themedContext.runOnUiQueueThread(new Runnable() {
<strong i="18">@Override</strong>
public void run() {
sDummyEditTextBackgroundDrawable = new EditText(themedContext).getBackground();
}
});
}
mDummyEditText = editText;
}
<strong i="19">@Override</strong>
public long measure(YogaNode node, float width, YogaMeasureMode widthMode, float height,
YogaMeasureMode heightMode)
{
// measure() should never be called before setThemedContext()
EditText editText = Assertions.assertNotNull(mDummyEditText);
if (mLocalData == null || sDummyEditTextBackgroundDrawable == null)
{
// No local data or edit text background drawable, no intrinsic size.
return YogaMeasureOutput.make(0, 0);
}
// {<strong i="20">@code</strong> EditText} has by default a border at the bottom of its view
// called "underline". To have a native look and feel of the TextEdit
// we have to preserve it at least by default.
// The border (underline) has its padding set by the background image
// provided by the system (which vary a lot among versions and vendors
// of Android), and it cannot be changed.
// So, we have to enforce it as a default padding.
// Sharing the same background drawable is not working in measure and Edit Text features.
// Hence, cloning.
editText.setBackground(sDummyEditTextBackgroundDrawable.getConstantState().newDrawable());
setDefaultPadding(Spacing.START, editText.getPaddingStart());
setDefaultPadding(Spacing.TOP, editText.getPaddingTop());
setDefaultPadding(Spacing.END, editText.getPaddingEnd());
setDefaultPadding(Spacing.BOTTOM, editText.getPaddingBottom());
// We must measure the EditText without paddings, so we have to reset them.
editText.setPadding(0, 0, 0, 0);
// This is needed to fix an android bug since 4.4.3 which will throw an NPE in measure,
// setting the layoutParams fixes it: https://code.google.com/p/android/issues/detail?id=75877
editText.setLayoutParams(
new ViewGroup.LayoutParams(
ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT));
mLocalData.apply(editText);
editText.measure(
MeasureUtil.getMeasureSpec(width, widthMode),
MeasureUtil.getMeasureSpec(height, heightMode));
return YogaMeasureOutput.make(editText.getMeasuredWidth(), editText.getMeasuredHeight());
}
<strong i="21">@Override</strong>
public boolean isVirtualAnchor()
{
return true;
}
<strong i="22">@Override</strong>
public boolean isYogaLeafNode()
{
return true;
}
<strong i="23">@Override</strong>
public void setLocalData(Object data)
{
Assertions.assertCondition(data instanceof ReactTextInputLocalData);
mLocalData = (ReactTextInputLocalData) data;
// Telling to Yoga that the node should be remeasured on next layout pass.
dirty();
// Note: We should NOT mark the node updated (by calling {<strong i="24">@code</strong> markUpdated}) here
// because the state remains the same.
}
@ReactProp(name = "mostRecentEventCount")
public void setMostRecentEventCount(int mostRecentEventCount)
{
mMostRecentEventCount = mostRecentEventCount;
}
@ReactProp(name = PROP_TEXT)
public void setText(<strong i="25">@Nullable</strong> String text)
{
mText = text;
markUpdated();
}
public <strong i="26">@Nullable</strong> String getText()
{
return mText;
}
<strong i="27">@Override</strong>
public void setTextBreakStrategy(<strong i="28">@Nullable</strong> String textBreakStrategy)
{
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M)
{
return;
}
if (textBreakStrategy == null || "simple".equals(textBreakStrategy))
{
mTextBreakStrategy = Layout.BREAK_STRATEGY_SIMPLE;
}
else if ("highQuality".equals(textBreakStrategy))
{
mTextBreakStrategy = Layout.BREAK_STRATEGY_HIGH_QUALITY;
}
else if ("balanced".equals(textBreakStrategy))
{
mTextBreakStrategy = Layout.BREAK_STRATEGY_BALANCED;
}
else
{
throw new JSApplicationIllegalArgumentException("Invalid textBreakStrategy: " +
textBreakStrategy);
}
}
<strong i="29">@Override</strong>
public void onCollectExtraUpdates(UIViewOperationQueue uiViewOperationQueue)
{
if (mMostRecentEventCount != UNSET)
{
ReactTextUpdate reactTextUpdate =
new ReactTextUpdate(
spannedFromShadowNode(this, getText()),
mMostRecentEventCount,
mContainsImages,
getPadding(Spacing.LEFT),
getPadding(Spacing.TOP),
getPadding(Spacing.RIGHT),
getPadding(Spacing.BOTTOM),
mTextAlign,
mTextBreakStrategy);
uiViewOperationQueue.enqueueUpdateExtraData(getReactTag(), reactTextUpdate);
}
}
<strong i="30">@Override</strong>
public void setPadding(int spacingType, float padding)
{
super.setPadding(spacingType, padding);
markUpdated();
}
} `
Π€Π°ΠΉΠ» ΠΌΠ°ΠΊΠ΅ΡΠ° ΡΠ΅ΠΊΡΡΠ° ΡΠΈΠΊΡΠΈΠ²Π½ΠΎΠ³ΠΎ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ
<?xml version="1.0" encoding="utf-8"?>
<EditText
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/dummy_edit_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@null"
/>
@sayantanbugs Ρ Π²Π°Ρ Π΅ΡΡΡ ΡΡΠ°Π³ΠΌΠ΅Π½Ρ ΠΊΠΎΠ΄Π° Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΡ? ΠΠ»Π°Π³ΠΎΠ΄Π°ΡΡ!
ΠΠ±Π½ΠΎΠ²Π»Π΅Π½ ΠΌΠΎΠΉ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ, ΡΡΠΎΠ±Ρ Π²ΠΊΠ»ΡΡΠΈΡΡ ΠΊΠΎΠ΄ ShadowNode ΠΈ ΠΌΠ°ΠΊΠ΅Ρ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΉ Π΄Π»Ρ Π½Π°Π΄ΡΠ²Π°Π½ΠΈΡ ΡΠΈΠΊΡΠΈΠ²Π½ΠΎΠ³ΠΎ ΡΠ΅ΠΊΡΡΠ° ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ.
@sayantanbugs - ΠΡΠ»ΠΈΡΠ½Π°Ρ π΅οΈ ΡΠ°Π±ΠΎΡΠ°! ΠΠΎΠΏΡΠΎΠ±ΡΠ΅ΠΌ ΡΡΠΎ Π² Π½Π°ΡΠ΅ΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠ΅ ΠΈ Π΄ΠΎΠ»ΠΎΠΆΠΈΠΌ! ΠΠ»Π°Π³ΠΎΠ΄Π°ΡΡ!
Π’Π° ΠΆΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°
ReactNative: 0,55,4
Android: 8.0
@sayantanbugs, Π½Π΅ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ Π²Ρ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΡΡ
Π’Π° ΠΆΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°. Π‘ΠΎΠΎΠ±ΡΠ°Π΅ΡΡΡ ΡΠ΅ΡΠ΅Π· Crashlytics Π±Π΅Π· ΠΎΡΠΎΠ±ΡΡ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΡΡΠ΅ΠΉ, ΠΏΠΎΡΡΠΎΠΌΡ ΡΡΡΡΠ°Π½ΠΈΡΡ Π½Π΅ΠΏΠΎΠ»Π°Π΄ΠΊΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠ»ΠΎΠΆΠ½ΠΎ.
Π Π 55,3
Android 8
Fatal Exception: java.lang.NullPointerException: Attempt to invoke virtual method 'android.graphics.drawable.Drawable android.graphics.drawable.Drawable$ConstantState.newDrawable(android.content.res.Resources)' on a null object reference
at android.graphics.drawable.DrawableContainer$DrawableContainerState.createAllFutures(DrawableContainer.java:875)
at android.graphics.drawable.DrawableContainer$DrawableContainerState.getOpacity(DrawableContainer.java:1158)
at android.graphics.drawable.DrawableContainer.getOpacity(DrawableContainer.java:433)
at android.graphics.drawable.InsetDrawable.getOpacity(InsetDrawable.java:258)
at android.view.View.computeOpaqueFlags(View.java:16791)
at android.view.View.setBackgroundDrawable(View.java:21710)
at android.view.View.setBackground(View.java:21603)
at android.view.View.<init>(View.java:5547)
at android.widget.TextView.<init>(TextView.java:1135)
at android.widget.EditText.<init>(EditText.java:107)
at android.widget.EditText.<init>(EditText.java:103)
at android.widget.EditText.<init>(EditText.java:99)
at android.widget.EditText.<init>(EditText.java:95)
at com.facebook.react.views.textinput.ReactTextInputShadowNode.setThemedContext(ReactTextInputShadowNode.java:80)
at com.facebook.react.uimanager.UIImplementation.createView(UIImplementation.java:282)
at com.facebook.react.uimanager.UIManagerModule.createView(UIManagerModule.java:366)
at java.lang.reflect.Method.invoke(Method.java)
at com.facebook.react.bridge.JavaMethodWrapper.invoke(JavaMethodWrapper.java:372)
at com.facebook.react.bridge.JavaModuleWrapper.invoke(JavaModuleWrapper.java:160)
at com.facebook.react.bridge.queue.NativeRunnable.run(NativeRunnable.java)
at android.os.Handler.handleCallback(Handler.java:789)
at android.os.Handler.dispatchMessage(Handler.java:98)
at com.facebook.react.bridge.queue.MessageQueueThreadHandler.dispatchMessage(MessageQueueThreadHandler.java:29)
at android.os.Looper.loop(Looper.java:164)
at com.facebook.react.bridge.queue.MessageQueueThreadImpl$3.run(MessageQueueThreadImpl.java:192)
at java.lang.Thread.run(Thread.java:764)
ΠΡΠΎ ΠΎΡΠ½ΠΎΠ²Π½Π°Ρ ΠΏΡΠΈΡΠΈΠ½Π° ΡΠ±ΠΎΠ΅Π² Π² ΡΠ°Π±ΠΎΡΠ΅ Π½Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΠΎΠ³Π΄Π° / ΠΊΠ°ΠΊ ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΡΠ»ΡΡΠΈΡΡΡΡ?
Π’ΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅ ΠΈ Π² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π΅Π½Π½ΠΎΠΉ ΡΠ±ΠΎΡΠΊΠ΅.
ΠΡΠ²Π°Π΅Ρ ΠΏΡΠΈ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΡΠ΅ΠΊΡΡΠ°. ΠΡΠΎ ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎ.
ΡΠ΅Π°Π³ΠΈΡΠΎΠ²Π°ΡΡ: 16.3.0
ΡΠ΅Π°Π³ΠΈΡΠΎΠ²Π°ΡΡ - ΡΠΎΠ΄Π½ΠΎΠΉ: 0.54.4
ΡΠ°ΠΊΠ°Ρ ΠΆΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°, ΠΊΠ°ΠΊ ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ?
^^^ ΠΠΎΠ»ΡΡΠ΅ Π»ΡΠ΄Π΅ΠΉ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΠΎΠΏΡΡΠ°ΡΡΡΡ ΡΠ΅ΡΠΈΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ΅ΡΠ΅Π½ΠΈΡ ReactTextInputShadowNode.java
Π² ΠΏΠ°ΠΏΠΊΠ΅ react-native
ΠΈ Π·Π°ΠΌΠ΅Π½ΠΈΡΠ΅ ΠΊΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΠ½ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΠ», ΠΊΠ°ΠΊ Π΅Π³ΠΎ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅. Π’Ρ Π±ΡΠ΄Π΅ΡΡ ΠΏΡΠΈΡΡΠ½ΠΎ ΡΠ΄ΠΈΠ²Π»Π΅Π½.
Π‘ΠΏΡΡΡΡ Π½Π΅Π΄Π΅Π»Ρ ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Ρ ΡΠ΄Π΅Π»Π°Π» ΡΡΠΎ, Ρ ΡΠ°Π΄ ΡΠΎΠΎΠ±ΡΠΈΡΡ, ΡΡΠΎ ΠΎΡΠΈΠ±ΠΊΠ° ΠΏΡΠΎΠΈΠ·ΠΎΡΠ»Π° ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΡΠ°Π·. ΠΠ Π½Π° ΡΡΠΎΡ ΡΠ°Π· Π²ΡΠ΅ Π±ΡΠ»ΠΎ ΠΏΠΎ-Π΄ΡΡΠ³ΠΎΠΌΡ ... Π― ΡΠΌΠΎΠ³ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΡΡΡΠΈΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ Π·Π°ΡΡΠ°Π²ΠΈΡΡ Π΅Π³ΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΠΎ Π±Π΅Π· Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΏΠ΅ΡΠ΅ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ΅ΡΠ΅Π· react-native run-android
ΡΡΠΎ Π±ΡΠ»ΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π±ΠΎΠ»ΡΠ½ΠΎ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΡΠ°Π½ΡΡΠ΅ Ρ Π±ΡΠΊΠ²Π°Π»ΡΠ½ΠΎ ΡΠ΅ΡΡΠ» Π΄ΠΎΡΡΡΠΏ ΠΊ ΠΏΠ°ΡΠ΅ ΡΠΊΡΠ°Π½ΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π» ΡΠ΅ TextInputs. Π― ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΡ ΠΎΡΠΌΠ΅ΡΠ°ΡΡ ΠΎΡΠΈΠ±ΠΊΡ, Π΅ΡΠ»ΠΈ ΠΎΠ½Π° ΠΏΠΎΡΠ²ΠΈΡΡΡ ΡΠ½ΠΎΠ²Π°, Π½ΠΎ ΠΏΠΎΠΊΠ° Ρ Π΄ΡΠΌΠ°Ρ, ΡΡΠΎ Ρ ΠΌΠΎΠ΅ΠΉ ΡΡΠΎΡΠΎΠ½Ρ ΠΎΠ½Π° ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΏΠΎΡΡΠΈ ΠΈΠ΄Π΅Π°Π»ΡΠ½ΠΎ. ΠΡΠ»ΠΈΡΠ½Π°Ρ ΠΎΡΠ»Π°Π΄ΠΊΠ°, @sayantanbugs!
@ Friendly-Robot imo, ΡΡΠΎ Π½Π΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅. Π Π»ΡΡΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΡΠΎ ΠΎΠ±Ρ ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡΡΡ. ΠΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π΅Π½Π½ΠΎΠΌ ΠΊΠΎΠ΄Π΅, Π³Π΄Π΅ ΠΌΡ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡΠΎΡΡΠΎ ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ Π½Π΅ΠΏΡΠΎΠ²Π΅ΡΠ΅Π½Π½ΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅, ΠΊΠ°ΠΊ Π²Ρ Π΄Π°ΠΆΠ΅ ΠΏΡΠΈΠ·Π½Π°Π΅ΡΠ΅, Π½Π΅ ΠΈΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ.
ΠΡΠ»ΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° ΡΡΠΎ ΡΠ°Π·Π΄ΡΠ°ΠΆΠ°Π΅Ρ, ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ, Π²ΠΎ ΡΡΠΎ Π±Ρ ΡΠΎ Π½ΠΈ ΡΡΠ°Π»ΠΎ. ΠΠΎ Ρ Π½Π΅ ΡΡΠΈΡΠ°Ρ ΡΠ°Π·ΡΠΌΠ½ΡΠΌ ΠΌΠΎΡΠΈΠ²ΠΈΡΠΎΠ²Π°ΡΡ Π»ΡΠ΄Π΅ΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠΎ ΠΊΠ°ΠΊ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅. ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΎΡΠ½ΠΎΠ²Ρ Π΄Π»Ρ ΠΏΠΈΠ°ΡΠ°.
Π‘ΠΎΠ³Π»Π°ΡΠ΅Π½ Ρ @ Friendly-Robot (ΡΠ΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, ΡΠΏΠ°ΡΠΈΠ±ΠΎ @sayantanbugs ). ΠΡΠΎ-Π½ΠΈΠ±ΡΠ΄Ρ ΠΈΠ· RN Π·Π΄Π΅ΡΡ? ΠΠ°ΠΊ Π²Ρ Π΄ΡΠΌΠ°Π΅ΡΠ΅, ΡΠΌΠΎΠΆΠ΅Ρ Π»ΠΈ ΠΏΠ°ΡΡ ΠΏΠΎΠΏΠ°ΡΡΡ Π² ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ RN ΠΈ ΠΏΡΠΎΠΉΡΠΈ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅?
Π₯ΠΎΡΠΎΡΠΎ, Ρ Π½Π°ΠΊΠΎΠ½Π΅Ρ ΡΠΌΠΎΠ³ ΠΏΡΠΎΡΠ΅ΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ @sayantanbugs , Π½ΠΎ ΠΎΠ½, ΠΏΠΎΡ
ΠΎΠΆΠ΅, Π½Π΅ ΡΡΠ°Π±ΠΎΡΠ°Π» Π΄Π»Ρ ΠΌΠ΅Π½Ρ (ΠΎΠ½ ΡΠ°ΠΊΠΆΠ΅ ΠΎΡΠ½ΠΎΠ²Π°Π½ Π½Π° Π½Π΅ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ ΠΊΠΎΠ΄Π΅). ΠΠ΄Π½Π°ΠΊΠΎ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΡ (ΠΏΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Ρ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ°) Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΡΡ ΡΠ²ΠΎΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΡ ΠΊΠΎΠΏΠΈΡ ReactEditText
Ρ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½Π½ΡΠΌ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ drawableStateChanged()
:
<strong i="9">@Override</strong>
protected void drawableStateChanged() {
try {
super.drawableStateChanged();
} catch (Exception e) {
Timber.e("Prevented Drawable crash!");
}
}
ΠΡΠΎ Π±ΡΠΊΠ²Π°Π»ΡΠ½ΠΎ ΠΏΡΠΎΡΡΠΎ ΠΏΠ°ΡΡ, Π½ΠΎ, ΠΏΠΎ ΠΊΡΠ°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅ΡΠ΅, ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π΅ Π²ΡΠ»Π΅ΡΠΈΡ. ΠΠ°ΡΠΊΠΎΠ»ΡΠΊΠΎ Ρ ΠΌΠΎΠ³Ρ ΡΡΠ΄ΠΈΡΡ, ΡΠ΅ΠΊΡΡΠΎΠ²ΡΠΉ Π²Π²ΠΎΠ΄ ΠΏΠΎ-ΠΏΡΠ΅ΠΆΠ½Π΅ΠΌΡ ΠΎΡΠ·ΡΠ²ΡΠΈΠ² ΠΈ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ, ΠΊΠ°ΠΊ ΠΎΠΆΠΈΠ΄Π°Π»ΠΎΡΡ.
ΠΡΠΈ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠΈ ΡΠ±ΠΎΡ (ΡΠ΅ΠΏΠ΅ΡΡ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½Π½ΠΎΠ³ΠΎ) Ρ ΠΌΠΎΠ³ Π²ΠΈΠ΄Π΅ΡΡ, ΡΡΠΎ ΡΡΠΎ ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΎΠΈΠ·ΠΎΡΠ»ΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°Π· ΠΏΠΎΠ΄ΡΡΠ΄.
Π ΠΠΠΠΠ’ΠΠ ΠΠΠΠ’Π¬:
Π₯ΠΌΠΌΠΌ ... ΠΏΠΎΠΊΠ° Π²ΡΠ΅ Π²ΡΠΎΠ΄Π΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ, ΠΏΠΎΡ
ΠΎΠΆΠ΅, ΡΡΠΎ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ Drawable Π±ΡΠ»ΠΎ ΠΏΠΎΠ²ΡΠ΅ΠΆΠ΄Π΅Π½ΠΎ Π½Π°Π²ΡΠ΅Π³Π΄Π°. ΠΠ°ΠΆΠ΅ ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠΎΠ²Π΅ΡΡΠ΅Π½Π½ΠΎ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ Ρ Π½ΠΎΠ²ΡΠΌΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌΠΈ Π²Π²ΠΎΠ΄Π° ΡΠ΅ΠΊΡΡΠ° ΠΏΡΠΈΠΊΠΎΡΠ½ΠΎΠ²Π΅Π½ΠΈΠ΅ ΠΊ Π»ΡΠ±ΠΎΠΌΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Π²Π²ΠΎΠ΄Π° ΡΠ΅ΠΊΡΡΠ° Π²ΡΠ·ΠΎΠ²Π΅Ρ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎΠ΅ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ. Π ΡΡΠ°ΡΡΡΡ, ΠΎΠ½ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈ Π½Π°ΠΆΠ°ΡΠΈΠΈ Π½Π° ΠΏΠΎΠ»Π΅ Π²Π²ΠΎΠ΄Π°, Π° Π½Π΅ ΠΏΡΠΈ Π²Π²ΠΎΠ΄Π΅ ΡΠ΅ΠΊΡΡΠ°.
Π‘Π΅Π³ΠΎΠ΄Π½Ρ Π²Π΅ΡΠ΅ΡΠΎΠΌ Ρ ΠΈΠ³ΡΠ°Π» ΡΠΎ ΡΠ²ΠΎΠΈΠΌ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΈ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΎΠΌ, Ρ ΠΏΠΎΠ»ΡΡΠ°Π» ΡΡΡ ΠΎΡΠΈΠ±ΠΊΡ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ Π΄Π²Π°Π΄ΡΠ°ΡΡ ΡΠ°Π· ... Π― Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ Π΄Π΅Π»Π°Π», ΠΊΡΠΎΠΌΠ΅ ΠΊΠ°ΠΊ Π½Π°ΠΆΠΈΠΌΠ°Π» Π½Π° ΡΠ²ΠΎΠΈ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄Ρ, ΡΡΠΎΠ±Ρ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄Ρ ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡΠΌΠΈ. ΠΡΠΌΠ°Ρ, ΡΡΠΎ Π±ΠΎΠ»ΡΡΠΎΠ΅ Π΄Π΅Π»ΠΎ: /
Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ @ Friendly-Robot Π·Π° ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΡ!
Π‘ΠΎΠ³Π»Π°ΡΠΈΡΠ΅ΡΡ Ρ ΡΠ΅ΠΌ, ΡΡΠΎ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΠΌΠ½Π΅Π½ΠΈΠΉ ΠΎ ΠΌΠΎΠ΅ΠΌ ΡΠ΅ΡΠ΅Π½ΠΈΠΈ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠ°ΡΡΠ΅ΠΌ, ΠΈ Ρ ΡΠΏΠΎΠΌΡΠ½ΡΠ» ΠΎΠ± ΡΡΠΎΠΌ Π² ΡΠ²ΠΎΠ΅ΠΌ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠΌ ΠΏΠΎΡΡΠ΅, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅. ΠΡΠΈΡΠΈΠ½Π°, ΠΏΠΎ ΠΊΠΎΡΠΎΡΠΎΠΉ Π΅Π³ΠΎ Π²ΡΠ΅ Π΅ΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π² ΠΌΠΎΠ΅ΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠ΅, Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΌΡ ΡΠΎΠ·Π΄Π°Π»ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΌΠ½ΠΎΠ³ΠΎΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠΉ RTI Π½Π° Π½Π°ΡΠ΅ΠΉ ΡΡΠΎΡΠΎΠ½Π΅, ΡΠ°ΡΡΠΈΡΡΡΡΠΈΠΉ RN RTI. Π‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, ΠΌΡ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΌΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π² ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ShadowNode ΠΌΠΎΠ΅Π³ΠΎ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ RTI. Π€Π°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ, Π² Π½Π°ΡΠ΅ΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠ΅ ΠΌΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌ ΠΌΠΎΠ΄ΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ Π²Π΅ΡΡΠΈΡ RN Π΄Π»Ρ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΌΠ½ΠΎΠ³ΠΈΡ ΠΎΡΠΈΠ±ΠΎΠΊ / Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ RN, ΠΈ, ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, ΠΌΡ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΠΌ Π²Π½Π΅ΡΡΠΈ ΡΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² Π½Π΅Π΅.
Π― Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΏΠ»Π°Π½ΠΈΡΡΡ Π΅ΡΠ΅ ΡΠ°Π· Π²Π·Π³Π»ΡΠ½ΡΡΡ Π½Π° Π΄ΡΡΠ³ΠΈΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ Π·Π° ΡΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΌΠ½Π΅ ΠΏΡΠΈΡΠ»ΠΎΡΡ ΡΠ΅ΡΠΈΡΡ Π½Π°ΡΡΡΠ½ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π·Π° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π΄Π½Π΅ΠΉ.
Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ Π²ΡΠ΅ΠΌ Π·Π° ΠΎΡΠ·ΡΠ²!
@davidmontemayor , Π΅ΡΠ»ΠΈ ΡΡΠ° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΡ ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π±ΡΠ»Π° Π·Π°ΠΌΠ΅ΡΠ΅Π½Π° Ρ ΠΌΠΎΠΈΠΌ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ, Π²Ρ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ shadowNode, ΡΡΠΎΠ±Ρ ΠΏΡΠΎΡΡΠΎ Π²ΡΠ΅Π³Π΄Π° Π²ΡΠΏΠΎΠ»Π½ΡΡΡ new EditText (), Π½ΠΎ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ°Ρ ΡΡΠΎΡ Π²ΡΠ·ΠΎΠ² Π² UIthread ΠΈ, ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π½Π΅ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π² Π»ΡΠ±ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅. ΠΡΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎ ΠΈΡΠΏΡΠ°Π²ΠΈΡ ΡΡΠΎ. Π― Π½Π΅ Ρ
ΠΎΡΠ΅Π» ΡΡΠΎΠ³ΠΎ Π΄Π΅Π»Π°ΡΡ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΡΠΎ Π±ΡΠ» Π±Ρ Π½Π΅ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΏΠΎΡΠΎΠΊΠΎΠ², ΠΊΠΎΠ³Π΄Π° ΡΠ΅Π°Π»ΡΠ½Π°Ρ ΡΠ΅Π»Ρ Π² ΡΠ΅Π½Π΅Π²ΠΎΠΌ ΡΠ·Π»Π΅ Π·Π°ΠΊΠ»ΡΡΠ°Π»Π°ΡΡ Π² ΠΏΡΠΎΡΡΠΎΠΌ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ Π³ΡΠ°Π½ΠΈΡ ΡΠΎΠ½Π°, Π½ΠΎ ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·ΠΌ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΉ RN, Π²Π΅Π΄Π΅Ρ ΡΠ΅Π±Ρ Π½Π΅ ΡΠ°ΠΊ, Π° ΠΈΠΌΠ΅Π΅Ρ ΠΏΠΎΠ±ΠΎΡΠ½ΡΠΉ ΡΡΡΠ΅ΠΊΡ.
ΠΡΠΎ Π·Π°ΡΡΠ°Π²Π»ΡΠ΅Ρ Π½Π°Ρ Π΄ΡΠΌΠ°ΡΡ, ΡΡΠΎ ΠΌΡ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΡΠ²Π°ΡΡ ShadowNode ΡΠ°ΠΌΠΈ, ΡΠ°ΠΊ ΡΡΠΎ Π½Π°ΠΌ Π½Π΅ Π½ΡΠΆΠ΅Π½ ΠΎΠ±ΡΠ΅ΠΊΡ EditText Π² ΡΠΎΠΌ Π²ΠΈΠ΄Π΅, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΎΠ½ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π² ΡΡΠΎΡ ΠΌΠΎΠΌΠ΅Π½Ρ, ΠΊΡΠΎΠΌΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ.
Π‘ΠΎ ΠΌΠ½ΠΎΠΉ ΡΠΎΠΆΠ΅ Π±ΡΠ²Π°Π΅Ρ. Π― ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ScrollView.
Π£ ΠΌΠ΅Π½Ρ Π΅ΡΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ (ΡΠ°Π΄ΠΈΠΎ, ΡΠΏΠΈΡΠΎΠΊ, ΡΠ΅ΠΊΡΡ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ Ρ. Π.) Π ΡΠ΅ΠΆΠΈΠΌΠ΅ ΠΏΡΠΎΠΊΡΡΡΠΊΠΈ. Π― Π±Ρ ΡΠΊΠ°Π·Π°Π», ΡΡΠΎ Ρ ΠΌΠ΅Π½Ρ Π΅ΡΡΡ ΠΌΠ°ΠΊΡΠΈΠΌΡΠΌ 10 ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ, ΡΠ°ΠΊ ΡΡΠΎ ΡΠΏΠΈΡΠΎΠΊ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΉ.
ΠΠ΄Π½Π°ΠΊΠΎ ΡΡΠΎ ΡΠ»ΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ. ΠΠ°ΠΆΠ΅ΡΡΡ, ΡΡΠΎ ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ Π² ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ, Π½ΠΎ Ρ Π΄ΡΠΌΠ°Ρ, ΡΡΠΎ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ ΡΡΠΎ, ΡΡΠΎΠ±Ρ Π²ΡΠ²Π΅ΡΡΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° ΠΏΠ΅ΡΠ΅Π΄Π½ΠΈΠΉ ΠΏΠ»Π°Π½ ΠΈΠ· ΡΠΎΠ½Π°, ΠΊΠΎΠ³Π΄Π° Ρ ΠΌΠ΅Π½Ρ Π΅ΡΡΡ ScrollView Π½Π° ΡΠΊΡΠ°Π½Π΅ (Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ edittext Π² Π½Π΅ΠΌ).
ΠΠ΅ ΡΠ²Π΅ΡΠ΅Π½ Π½Π° 100%
ΠΠ½Π΅ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ, ΡΠ²ΡΠ·Π°Π½ΠΎ Π»ΠΈ ΡΡΠΎ Ρ Π²Π΅ΡΡΠΈΠ΅ΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ Android.
ΠΠ°Ρ
ΠΎΠ΄ΠΈΡΠ΅ Π½Π° FB, ΠΈΡΠΏΡΠ°Π²ΡΡΠ΅ ΡΡΠΎΡ Π±Π°Π³.
ΠΠΎΠ³Π΄Π° ΡΠ»ΡΡΠ°ΡΡΡΡ ΡΠ°ΠΊΠΈΠ΅ ΡΠ»ΡΡΠ°ΠΉΠ½ΡΠ΅ ΡΠ±ΠΎΠΈ, ΡΠ»ΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ ΠΊΠ°ΡΠ΅ΡΡΠ²Π°.
com.facebook.react.views.textinput.ReactEditText
Π Π 0,54
Android SDK 27
Π’Π΅Π»Π΅ΡΠΎΠ½ 8.1
ΠΠΌΠ΅Ρ ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, ΡΠ°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ScrollViews. @davidmontemayor , Π½Π΅ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ Π²Ρ
ΠΠ΄Π½Π° ΠΈ ΡΠ° ΠΆΠ΅:
NullPointerException: Attempt to invoke virtual method 'android.graphics.drawable.Drawable android.graphics.drawable.Drawable$ConstantState.newDrawable(android.content.res.Resources)' on a null object reference
@Squidski - Π ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡ, ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ "ΠΏΠΎΠΉΠΌΠ°ΡΡ ΠΈΡ
Π²ΡΠ΅Ρ
" ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ ΡΡΠ΅Π·Π²ΡΡΠ°ΠΉΠ½ΠΎ ΡΠ»ΠΎΠΆΠ½ΡΠΌ, ΠΊΠΎΠ³Π΄Π° Π²Ρ Π½Π°ΡΠΈΠ½Π°Π΅ΡΠ΅ ΠΈΠΌΠ΅ΡΡ Π΄Π΅Π»ΠΎ Ρ ΠΎΡΠΈΠ±ΠΊΠ°ΠΌΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ EditText
. ΠΠ»Ρ ΡΠΏΡΠ°Π²ΠΊΠΈ: Π΅ΡΡΡ Π΄Π²Π° ΡΠ°Π·Π½ΡΡ
ΡΠΏΠΎΡΠΎΠ±Π° ΠΏΡΠΎΡΠ²Π»Π΅Π½ΠΈΡ ΡΡΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ:
android.widget.EditText.<init>(EditText.java:95)
)android.widget.TextView.onTouchEvent(TextView.java:8467)
)ΠΠ»Π°Π²Π½ΠΎΠ΅ - Π·Π°ΠΌΠ΅Π½ΠΈΡΡ ΡΠΎΠ·Π΄Π°Π½Π½ΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π² ReactTextInputShadowNode
. ΠΠΌΠ΅ΡΡΠΎ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡΡ Π΅ΠΌΡ Π΄Π΅Π»Π°ΡΡ new EditText(getThemedContext())
, ΡΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΡΠ²ΠΎΠΉ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΉ ΠΊΠ»Π°ΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ°ΡΡΠΈΡΡΠ΅ΡΡΡ ΠΎΡ EditText
. ΠΠ°ΡΠ΅ΠΌ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠ΅ΡΠ΅Ρ
Π²Π°ΡΠΈΡΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅, Π²ΡΠ·Π²Π°Π½Π½ΠΎΠ΅ Π²ΡΠΎΡΡΠΌ ΠΏΡΡΠ΅ΠΌ Π² drawableStateChanged()
.
Π‘Π»ΠΎΠΆΠ½Π΅Π΅ Π²ΡΠ΅Π³ΠΎ ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ ΠΎΡΠΈΠ±ΠΊΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ ΠΊΠ»Π°ΡΡ Β«Drawable WrapperΒ», ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ ΠΎΠ±Π΅ΡΡΡΠ²Π°Π½ΠΈΡ Π»ΡΠ±ΠΎΠ³ΠΎ ΡΡΠ°ΡΠΎΠ³ΠΎ drawable, ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π² EditText.setBackground()
. ΠΠ°ΡΠ΅ΠΌ ΡΡΠ° ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠ° Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΠ΅ΡΠ΅Ρ
Π²Π°ΡΡΠ²Π°ΡΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ, ΡΠΎΠ·Π΄Π°Π²Π°Π΅ΠΌΡΠ΅ Π΄Π΅Π»Π΅Π³Π°ΡΠΎΠΌ.
ΠΡΠ° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΠΏΠΎ-ΠΏΡΠ΅ΠΆΠ½Π΅ΠΌΡ ΡΠ»ΡΡΠ°ΠΉΠ½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ Π² ΠΌΠΎΠ΅ΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Ρ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΉ Π²Π΅ΡΡΠΈΠ΅ΠΉ React Native + latest JSC + latest gradle ΠΏΠΎ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ Π½Π° 25 ΠΈΡΠ»Ρ 2018 Π³.
React Native Environment Info:
System:
OS: macOS High Sierra 10.13.3
CPU: x64 Intel(R) Core(TM) i5-5250U CPU @ 1.60GHz
Memory: 26.19 MB / 8.00 GB
Shell: 5.3 - /bin/zsh
SDKs:
iOS SDK:
Platforms: iOS 11.4, macOS 10.13, tvOS 11.4, watchOS 4.3
IDEs:
Android Studio: 3.1 AI-173.4720617
Xcode: 9.4.1/9F2000 - /usr/bin/xcodebuild
npmPackages:
react: ^16.4.1 => 16.4.1
react-native: ^0.56.0 => 0.56.0
npmGlobalPackages:
react-native-cli: 2.0.1
JSC: org.webkit:android-jsc:r224109
Gradle: 4.8.1
Π― Π½Π°ΡΠ°Π» Π·Π°ΠΌΠ΅ΡΠ°ΡΡ ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Ρ Android 8.0.0 ΠΈ Ρ RN 0.55.3. ΠΡΡΡ Π»ΠΈ Ρ Π½ΠΈΡ ΠΊΠ°ΠΊΠΈΠ΅-ΡΠΎ ΠΎΠ±Ρ ΠΎΠ΄Π½ΡΠ΅ ΠΏΡΡΠΈ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΠΈΠ»ΠΈ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΏΠΈΠ°Ρ?
Π’Π°ΠΊΠ°Ρ ΠΆΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎ Ρ FlatList of TextInputs π
java.lang.NullPointerExceptionMainActivity
java.lang.NullPointerException Attempt to invoke virtual method 'android.graphics.drawable.Drawable android.graphics.drawable.Drawable$ConstantState.newDrawable(android.content.res.Resources)' on a null object reference
DrawableContainer.java:875 android.graphics.drawable.DrawableContainer$DrawableContainerState.createAllFutures
DrawableContainer.java:1158 android.graphics.drawable.DrawableContainer$DrawableContainerState.getOpacity
DrawableContainer.java:433 android.graphics.drawable.DrawableContainer.getOpacity
InsetDrawable.java:258 android.graphics.drawable.InsetDrawable.getOpacity
View.java:15842 android.view.View.computeOpaqueFlags
View.java:20658 android.view.View.setBackgroundDrawable
View.java:20551 android.view.View.setBackground
View.java:5290 android.view.View.<init>
TextView.java:832 android.widget.TextView.<init>
EditText.java:88 android.widget.EditText.<init>
EditText.java:84 android.widget.EditText.<init>
EditText.java:80 android.widget.EditText.<init>
EditText.java:76 android.widget.EditText.<init>
ReactTextInputShadowNode.java:80 com.facebook.react.views.textinput.ReactTextInputShadowNode.setThemedContext
UIImplementation.java:282 com.facebook.react.uimanager.UIImplementation.createView
UIManagerModule.java:366 com.facebook.react.uimanager.UIManagerModule.createView
Method.java:-2 java.lang.reflect.Method.invoke
JavaMethodWrapper.java:372 com.facebook.react.bridge.JavaMethodWrapper.invoke
JavaModuleWrapper.java:160 com.facebook.react.bridge.JavaModuleWrapper.invoke
NativeRunnable.java:-2 com.facebook.react.bridge.queue.NativeRunnable.run
Handler.java:790 android.os.Handler.handleCallback
Handler.java:99 android.os.Handler.dispatchMessage
MessageQueueThreadHandler.java:29 com.facebook.react.bridge.queue.MessageQueueThreadHandler.dispatchMessage
Looper.java:164 android.os.Looper.loop
MessageQueueThreadImpl.java:192 com.facebook.react.bridge.queue.MessageQueueThreadImpl$3.run
Thread.java:764 java.lang.Thread.run
ΠΡΠ½ΠΎΠ²ΡΠ²Π°ΡΡΡ Π½Π° ΡΡΠ΅Π½ΠΈΠΈ ΠΈ ΠΎΡΠ»Π°Π΄ΠΊΠ΅, Ρ ΡΠ΅ΡΠΈΠ» ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅ Π² ΡΡΠΈ Π²ΡΡ ΠΎΠ΄Π½ΡΠ΅ ...
Π£Π΄Π°Π»ΠΈΡΠ΅ Π²ΡΠ΅ Π²ΡΠ·ΠΎΠ²Ρ underlineColorAndroid ΠΈΠ· ΠΌΠΎΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π° (Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ react-native-elements 0.19)
ΠΠ±Π½ΠΎΠ²ΠΈΡΠ΅ ΠΌΠΎΠΈ ΡΡΠΈΠ»ΠΈ Android, ΡΡΠΎΠ±Ρ ΠΎΠ½ΠΈ Π±ΡΠ»ΠΈ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌΠΈ. ΠΡΠΎ Π·Π°ΡΡΠ°Π²ΠΈΡ Π²ΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ EditText ΠΈΠΌΠ΅ΡΡ ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΡΠΉ ΡΠΎΠ½
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!-- Customize your theme here. -->
<item name="android:editTextStyle">@style/AppEditTextStyle</item>
<item name="editTextStyle">@style/AppEditTextStyle</item> <!-- For compatibility with the support library -->
</style>
<style name="AppEditTextStyle" parent="@style/Widget.AppCompat.EditText">
<item name="android:background"><strong i="15">@android</strong>:color/transparent</item>
</style>
</resources>
Π’Π΅ΡΡ - Π’Π΅ΡΡ - Π’Π΅ΡΡ. ΠΡΠΎΠ±Π»Π΅ΠΌΡ ΡΠ»ΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ. Π₯ΠΎΡΡ ΡΠ΅Π³ΠΎΠ΄Π½Ρ ΡΡΡΠΎΠΌ Π½Π° Π½Π΅Π³ΠΎ Π½Π°ΡΠΊΠ½ΡΠ»ΡΡ ΠΊΠ»ΠΈΠ΅Π½Ρ.
Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π·Π°ΠΏΠ°ΡΠ½ΠΎΠ³ΠΎ Π²Π°ΡΠΈΠ°Π½ΡΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎΡ @sayantanbugs
4.1 ΠΠ±Π½ΠΎΠ²ΠΈΡΠ΅ react-native-elements Π΄ΠΎ 1.0xx beta
Π§ΡΠ΅Π½ΠΈΡ
https://issuetracker.google.com/issues/37068452
https://github.com/facebook/react-native/issues/18214
Π Π 0,54
Π Π΅Π°Π³ΠΈΡΠΎΠ²Π°ΡΡ Π½Π° Π½Π°ΡΠΈΠ²Π½ΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ 0.19
ΠΡΠ²Π°Π΅Ρ Π½Π° RN 0.56.0 Android 8.1.0
ΠΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ, Π΅ΡΡΡ Π»ΠΈ ΠΏΠ»Π°Π½Ρ ΠΏΡΠΎΠ΄Π²ΠΈΠ³Π°ΡΡ Π΅Π³ΠΎ Π²ΠΏΠ΅ΡΠ΅Π΄.
ΠΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅ Π·Π°ΠΌΠ΅Π½ΠΈΡΡ Π²ΡΠ΅ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΡ
underlineColorAndroid={"transparent"}
Ρ ΡΡΠ°ΡΡΠΈΠ΅ΠΌ
underlineColorAndroid={"#00000000"}
ΠΠΌΠ΅Ρ ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ. Π Π΅ΡΠΈΡΠ΅ ΡΡΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ΅Π³ΠΎ-Π½ΠΈΠ±ΡΠ΄Ρ Ρ ΠΈΡΡΠΎΠ³ΠΎ. Π‘Π΄Π΅Π»Π°ΠΉΡΠ΅ ΠΊΠ½ΠΎΠΏΠΊΡ Π΄Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ Π²Π²ΠΎΠ΄Π°. ΠΡΠ°ΠΊ, Ρ Π½Π°Ρ Π΅ΡΡΡ FlatList ΠΊΠ½ΠΎΠΏΠΎΠΊ ΠΈ ΡΠΎΠ»ΡΠΊΠΎ TextInput, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΡ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΡΠ΅ΠΌ ΠΏΡΡΠΌΠΎ ΡΠ΅ΠΉΡΠ°Ρ. ΠΠ΅Π· ref Π½Π°ΠΌ Π½ΡΠΆΠ΅Π½ Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ ΡΠ΅Π»ΡΠΎΠΊ Π΄Π»Ρ Π½Π°ΡΠ°Π»Π° ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π²Π²ΠΎΠ΄Π°
handleShowInput(key) {
const { inputKeyToShow } = this.state;
if (!inputKeyToShow) {
this.setState({
inputKeyToShow: key,
}, () => this.textInput.focus());
} else {
this.setState({
inputKeyToShow: null,
});
}
}
{inputKeyToShow !== key ?
(
<TouchableOpacity
...
onPress={() => this.handleShowInput(key)}
>
<Text>{value}</Text>
</TouchableOpacity>
) :
(
<TextInput
...
ref={ref => (this.textInput = ref)}
value={value}
onEndEditing={() => this.handleShowInput(key)}
/>
)
}
@WilliamAlexander @paulroy Π‘ΡΠ°Π±ΠΎΡΠ°Π»ΠΎ Π»ΠΈ Π²Π°ΡΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅?
@xstreamcl ΡΠ΅ΡΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ Ρ ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π», ΠΏΠΎΠΊΠ° ΡΠ°Π±ΠΎΡΠ°Π΅Ρ. ΠΡΠΎΡΠ»ΠΎ Π±ΠΎΠ»Π΅Π΅ 2 Π½Π΅Π΄Π΅Π»Ρ, ΠΈ Ρ Π½Π΅ Π²ΠΈΠ΄Π΅Π» ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ.
Π₯ΠΎΡΡ ΡΡΠ΅Π±ΡΠ΅Ρ Π±ΠΎΠ»ΡΡΠ΅Π³ΠΎ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ;)
ΠΡΠ° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΠ»Π° ΠΊ ΡΠ±ΠΎΡ Π½Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π΅Π½Π½ΠΎΠΉ ΡΡΠ΅Π΄Π΅. ΠΡΠΎ Π½Π΅ΠΏΡΠΈΡΡΠ½ΡΠΉ Π±Π°Π³, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π΅Π³ΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠ»ΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ. ΠΡ Π½Π°ΡΠ»ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠΎΠ±Π΅ΡΠ°ΡΡΠ΅Π΅ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π΄Π»Ρ Π½Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΈ Ρ Ρ ΠΎΡΠ΅Π» Π±Ρ ΠΏΠΎΠ΄Π΅Π»ΠΈΡΡΡΡ ΡΠ²ΠΎΠΈΠΌΠΈ Π²ΡΠ²ΠΎΠ΄Π°ΠΌΠΈ Π·Π΄Π΅ΡΡ, ΡΡΠΎΠ±Ρ, Π½Π°Π΄Π΅ΡΡΡ, ΡΡΠΊΠΎΠ½ΠΎΠΌΠΈΡΡ Π²ΡΠ΅ΠΌΡ ΠΈ ΡΠ°Π·ΠΎΡΠ°ΡΠΎΠ²Π°Π½ΠΈΠ΅ Π΄ΡΡΠ³ΠΈΡ .
ΠΡΠ° ΠΎΡΠΈΠ±ΠΊΠ° ΠΏΡΠΈΠ²Π΅Π»Π° ΠΊ ΡΠ±ΠΎΡ Π½Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π° ΡΡΡΡΠΎΠΉΡΡΠ²Π°Ρ Samsung, Google ΠΈ LG Android. Π£ Π½Π°Ρ Π±ΡΠ»ΠΈ ΠΎΡΡΠ΅ΡΡ ΠΎ ΡΠ±ΠΎΡΡ ΠΈΠ· ΡΠ»Π΅Π΄ΡΡΡΠΈΡ Π²Π΅ΡΡΠΈΠΉ Android:
8.0.0
8.1.0
7.1.1
ΠΠ°ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ:
react-native
: 0.53.0react
: 16.2.0ΠΠ°ΠΊ ΠΎΡΠΌΠ΅ΡΠ°Π»ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ Π² ΡΡΠΎΠΌ ΠΏΠΎΡΠΎΠΊΠ΅, ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°, ΠΏΠΎΡ
ΠΎΠΆΠ΅, Π²ΡΠ·Π²Π°Π½Π° ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² TextInput
, FlatList
ΠΈ ScrollView
. Π Π½Π°ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ Ρ Π½Π°Ρ Π΅ΡΡΡ ΡΠΊΡΠ°Π½, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ ΠΎΠ΄ΠΈΠ½ TextInput
ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅ΠΌΡΠΉ Π½Π°Π΄ FlatList
. ΠΡΠΈ Π½Π°ΠΆΠ°ΡΠΈΠΈ Π½Π° ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π² FlatList
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅Ρ
ΠΎΠ΄ΠΈΡ Π½Π° Π½ΠΎΠ²ΡΠΉ ΡΠΊΡΠ°Π½, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ ΡΠΎΡΠΌΡ. ΠΠΎΡΠ½Π΅Π²ΠΎΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ ΡΡΠΎΠΉ ΡΠΎΡΠΌΡ - ΡΡΠΎ ScrollView
ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΡΠ΄ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² TextInput
(Π²ΠΌΠ΅ΡΡΠ΅ Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΠΌΠΈ ΠΊΠ½ΠΎΠΏΠΊΠ°ΠΌΠΈ ΠΈ Π΄ΡΡΠ³ΠΈΠΌΠΈ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌΡΠΌΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°ΠΌΠΈ). ΠΠ°ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π²ΡΠ»Π΅ΡΠ°Π΅Ρ, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π½Π°ΠΆΠΈΠΌΠ°Π΅Ρ Π½Π° ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΡΡΠΈΡ
FlatList
ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² (ΠΎΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ Π½Π΅ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π·).
ΠΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΡΠ»ΠΎΠΆΠ½ΠΎ. Π€Π°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ, ΠΌΡ Π½Π΅ ΡΠΌΠΎΠ³Π»ΠΈ ΡΡΠΎΠ³ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ. ΠΠΎ ΠΌΡ Π·Π½Π°Π΅ΠΌ, ΡΡΠΎ ΡΠ±ΠΎΠΉ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π½Π° ΡΡΠΎΠΌ ΡΡΠ°ΠΏΠ΅ ΡΠ°Π±ΠΎΡΠ΅Π³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ°, ΠΏΡΠΎΡΠΌΠ°ΡΡΠΈΠ²Π°Ρ Π·Π°ΠΏΠΈΡΠΈ ΡΠ΅Π°Π½ΡΠ° Appsee.
ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΌΡ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, Π½Π°ΠΌ ΠΏΡΠΈΡΠ»ΠΎΡΡ ΠΏΠΎΠ»Π°Π³Π°ΡΡΡΡ Π½Π° ΠΆΡΡΠ½Π°Π»Ρ ΡΠ±ΠΎΠ΅Π² ΠΈΠ· Appsee Π΄Π»Ρ Π΅Π΅ ΠΎΡΠ»Π°Π΄ΠΊΠΈ. Π― ΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π» ΡΡΠ°ΡΡΠΈΡΠΎΠ²ΠΊΡ ΡΡΠ΅ΠΊΠ° ΠΈΠ· ΠΎΡΡΠ΅ΡΠΎΠ² ΠΎ ΡΠ±ΠΎΡΡ Π½ΠΈΠΆΠ΅ (ΠΈ ΠΏΡΠΎΠΏΡΡΡΠΈΠ» Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΠΌΠ½ΡΠ΅ ΡΡΠ°ΡΡΠΊΠΈ). ΠΡΠΎ Π±ΠΎΠ»Π΅Π΅ ΠΈΠ»ΠΈ ΠΌΠ΅Π½Π΅Π΅ ΠΈΠ΄Π΅Π½ΡΠΈΡΠ½ΠΎ ΡΡΠ°ΡΡΠΈΡΠΎΠ²ΠΊΠ°ΠΌ ΡΡΠ΅ΠΊΠ°, ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Π½ΡΠΌ Π² ΡΡΠΎΠΉ Π²Π΅ΡΠΊΠ΅ Π΄ΡΡΠ³ΠΈΠΌΠΈ:
0 java.lang.NullPointerException: Attempt to invoke virtual method 'android.graphics.drawable.Drawable android.graphics.drawable.Drawable$ConstantState.newDrawable(android.content.res.Resources)' on a null object reference
1 at android.graphics.drawable.DrawableContainer$DrawableContainerState.createAllFutures(DrawableContainer.java:875)
2 at android.graphics.drawable.DrawableContainer$DrawableContainerState.getOpacity(DrawableContainer.java:1158)
3 at android.graphics.drawable.DrawableContainer.getOpacity(DrawableContainer.java:433)
4 at android.graphics.drawable.InsetDrawable.getOpacity(InsetDrawable.java:258)
5 at android.view.View.computeOpaqueFlags(View.java:16900)
6 at android.view.View.setBackgroundDrawable(View.java:21824)
7 at android.view.View.setBackground(View.java:21717)
8 at android.view.View.<init>(View.java:5577)
9 at android.widget.TextView.<init>(TextView.java:1144)
...
13 at android.widget.EditText.<init>(EditText.java:96)
14 at com.facebook.react.views.textinput.ReactEditText.<init>(ReactEditText.java:91)
15 at com.facebook.react.views.textinput.ReactTextInputManager.createViewInstance(ReactTextInputManager.java:91)
16 at com.facebook.react.views.textinput.ReactTextInputManager.createViewInstance(ReactTextInputManager.java:61)
...
35 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1408)
ΠΡΠΎΡΠΈΡΠ°Π² ΡΡΡ Π²Π΅ΡΠΊΡ ΠΈ ΠΏΡΠΎΠ²Π΅Π΄Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°ΡΠΎΠ² ΠΈΠ»ΠΈ ΠΏΡΠΎΠ²Π΅Π΄Ρ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅, Ρ Π½Π°ΡΠ΅Π» ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ underlineColorAndroid
prop Π² ΡΠ°ΠΉΠ»Π΅ ReactTextInputManager.java
:
@ReactProp(name = "underlineColorAndroid", customType = "Color")
public void setUnderlineColor(ReactEditText view, <strong i="10">@Nullable</strong> Integer underlineColor) {
// Drawable.mutate() can sometimes crash due to an AOSP bug:
// See https://code.google.com/p/android/issues/detail?id=191754 for more info
Drawable background = view.getBackground();
Drawable drawableToMutate = background.getConstantState() != null ?
background.mutate() :
background;
if (underlineColor == null) {
drawableToMutate.clearColorFilter();
} else {
drawableToMutate.setColorFilter(underlineColor, PorterDuff.Mode.SRC_IN);
}
}
ΠΡΡΠ΅Ρ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅, ΡΡΡΠ»ΠΊΠ° Π½Π° ΠΊΠΎΡΠΎΡΡΠΉ Π΅ΡΡΡ Π² ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ, ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΡΡ ΡΡΠ°ΡΡΠΈΡΠΎΠ²ΠΊΡ ΡΡΠ΅ΠΊΠ°:
java.lang.NullPointerException: Attempt to invoke virtual method 'android.graphics.drawable.Drawable android.graphics.drawable.Drawable$ConstantState.newDrawable()' on a null object reference
at android.graphics.drawable.LayerDrawable$ChildDrawable.<init>(LayerDrawable.java:1723)
at android.graphics.drawable.LayerDrawable$LayerState.<init>(LayerDrawable.java:1792)
at android.graphics.drawable.LayerDrawable.createConstantState(LayerDrawable.java:152)
at android.graphics.drawable.LayerDrawable.mutate(LayerDrawable.java:1652)
ΠΡΠΎ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ ΡΡΠ°ΡΡΠΈΡΠΎΠ²ΠΊΠ΅ ΡΡΠ΅ΠΊΠ°, Ρ ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΌΡ ΡΡΠ°Π»ΠΊΠΈΠ²Π°Π΅ΠΌΡΡ Π² Π½Π°ΡΠ΅ΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ. Π― Π½Π΅ ΠΏΡΠ΅ΡΠ΅Π½Π΄ΡΡ Π½Π° ΠΏΠΎΠ»Π½ΠΎΠ΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, Π½ΠΎ Π²ΠΏΠΎΠ»Π½Π΅ Π²Π΅ΡΠΎΡΡΠ½ΠΎ, ΡΡΠΎ ΠΏΡΠΈΡΠΈΠ½Π° ΡΠ±ΠΎΡ Π½Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π² ΡΠ°Π±ΠΎΡΠ΅ΠΉ ΡΡΠ΅Π΄Π΅ ΡΠ²ΡΠ·Π°Π½Π° Ρ ΡΡΠ°Π±Π°ΡΡΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΎΡΠΈΠ±ΠΊΠΈ Drawable.mutate()
. ΠΡΠΎ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ ΠΏΡΡΠ°Π΅ΠΌΡΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ underlineColorAndroid
Π΄Π»Ρ Π½Π°ΡΠ΅Π³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° TextInput
(ΠΈ, ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π²ΡΠ·ΡΠ²Π°Π΅ΠΌ ΠΌΠ΅ΡΠΎΠ΄ ReactTextInputManager.setUnderlineColor
).
ΠΠ°ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ΅Π½Π΄Π΅ΡΠΈΠ»ΠΎ TextInput
ΡΠΎ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌΠΈ ΡΠ΅ΠΊΠ²ΠΈΠ·ΠΈΡΠ°ΠΌΠΈ, ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ
Π±ΡΠ»ΠΎ underlineColorAndroid="transparent"
:
<TextInput
ref={this.handleRef}
value={this.props.value}
autoCorrect={false}
autoCapitalize="none"
underlineColorAndroid="transparent"
onSubmitEditing={this.handleSubmit}
onChangeText={this.props.onChangeText}
onFocus={this.handleFocused}
onBlur={this.handleBlur}
clearButtonMode="always"
/>
ΠΠ°ΠΌ Π½ΡΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΡΡΡ ΠΎΠΏΠΎΡΡ, ΡΡΠΎΠ±Ρ ΡΠ±ΡΠ°ΡΡ ΠΏΠΎΠ΄ΡΠ΅ΡΠΊΠΈΠ²Π°Π½ΠΈΠ΅ Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² TextInput
Π² Π½Π°ΡΠ΅ΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ. ΠΠΎ, ΡΡΠ΄Ρ ΠΏΠΎ Π½Π°ΡΠΈΠΌ Π²ΡΠ²ΠΎΠ΄Π°ΠΌ, Π΅Π³ΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΠΏΡΠΎΠΏΡΡΠΊΠ° Π·Π°ΠΏΡΡΠΊΠ°Π» ΠΎΡΠΈΠ±ΠΊΡ Android, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΈΠ½ΠΎΠ³Π΄Π° ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΠ»Π° ΠΊ ΡΠ±ΠΎΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
Π ΡΡΠ°ΡΡΡΡ, Π΅ΡΡΡ Π΅ΡΠ΅ ΠΎΠ΄ΠΈΠ½ ΡΠΏΠΎΡΠΎΠ± ΡΠ±ΡΠ°ΡΡ ΠΏΠΎΠ΄ΡΠ΅ΡΠΊΠΈΠ²Π°Π½ΠΈΠ΅ Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² TextInput
Π½Π° Android. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΡΡΡΠΎΠΊΡ Π² ΡΠ°ΠΉΠ» android/app/src/main/res/values/styles.xml
:
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="android:windowExitAnimation"><strong i="16">@android</strong>:anim/fade_out</item>
<item name="android:windowBackground">@drawable/splash_screen</item>
+ <item name="android:editTextBackground"><strong i="17">@android</strong>:color/transparent</item>
</style>
</resources>
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ Ρ ΡΠ°ΠΊΠΆΠ΅ Π²ΠΈΠ΄Π΅Π» ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π½ΠΎ ΡΡΠΎ Π½Π΅ ΡΠ½ΡΠ»ΠΎ Π΄Π»Ρ Π½Π°Ρ ΠΏΠΎΠ΄ΡΠ΅ΡΠΊΠΈΠ²Π°Π½ΠΈΡ:
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="android:windowExitAnimation"><strong i="22">@android</strong>:anim/fade_out</item>
<item name="android:windowBackground">@drawable/splash_screen</item>
</style>
+ <!-- This did *not* work for us... -->
+ <style name="AppEditTextStyle" parent="@style/Widget.AppCompat.EditText">
+ <item name="android:background"><strong i="23">@android</strong>:color/transparent</item>
+ </style>
</resources>
ΠΡΠΎ Π½Π΅ ΡΠ΅ΡΠ°Π΅Ρ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ. ΠΡΠΎ ΠΏΡΠΎΡΡΠΎ ΠΎΠ±Ρ
ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ ΠΎΡΠΊΠ°Π· ΠΎΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ underlineColorAndroid
prop Π² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°Ρ
TextInput
.
Π― ΠΏΠΎΠΊΠ° Π½Π΅ ΠΌΠΎΠ³Ρ Ρ ΡΠ²Π΅ΡΠ΅Π½Π½ΠΎΡΡΡΡ ΡΠΊΠ°Π·Π°ΡΡ, ΡΡΠΎ ΡΡΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΌΠ½Π΅ Π½Π΅ ΡΠ΄Π°Π»ΠΎΡΡ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎ. ΠΡ Π²Π½Π΅Π΄ΡΠΈΠΌ ΡΡΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π² ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ Π½Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π² Π±Π»ΠΈΠΆΠ°ΠΉΡΠΈΠ΅ Π½Π΅Π΄Π΅Π»ΠΈ. ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ Π½Π°ΠΌ ΠΏΡΠΈΠ΄Π΅ΡΡΡ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄ΠΎΠΆΠ΄Π°ΡΡ, ΡΡΠΎΠ±Ρ ΡΠ²ΠΈΠ΄Π΅ΡΡ, ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π»ΠΈ ΡΡΠΎ Π±ΠΎΠ»ΡΡΠ΅. Π― ΠΏΠΎΡΡΠ°ΡΠ°ΡΡΡ Π΄ΠΎΠ»ΠΎΠΆΠΈΡΡ ΠΎ Π½Π°ΡΠΈΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°Ρ .
Π£Π΄Π°ΡΠΈ Π²ΡΠ΅ΠΌ, Π±ΠΎΡΡΡΠΈΠΌΡΡ Ρ ΡΡΠΎΠΉ Π½Π΅ΠΏΡΠΈΡΡΠ½ΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ! ΠΠ°Π΄Π΅ΡΡΡ, ΡΡΠΎ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ.
Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ @Hopding, Π²ΠΈΠ΄ΠΈΠΌΠΎ, Π²Π°ΡΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ!
@Hopding
ΠΠ° Π Π°Π±ΠΎΡΠ°Ρ, Π±ΠΎΠ»ΡΡΠΎΠ΅ ΡΠΏΠ°ΡΠΈΠ±ΠΎ
ΠΠ»Ρ Π½Π°Ρ ΡΡΠ° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΠΈ Π²ΡΠ΅ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, ΠΊΠΎΠ³Π΄Π° Π²Ρ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ²Π°Π΅ΡΠ΅ Π²ΡΠ·ΡΠ²Π°ΡΡΠΈΠΉ ΠΌΠ΅ΡΠΎΠ΄ ΠΏΠΎ Π½ΡΠ»Π΅Π²ΠΎΠΉ ΡΡΡΠ»ΠΊΠ΅ Π² Android, Π²ΡΠ·Π²Π°Π½Ρ ΠΎΡΡΡΡΡΡΠ²ΠΈΠ΅ΠΌ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠ³ΠΎ ΡΡΠΈΠ»Ρ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ .
ΠΠ΅Π»ΠΎ Π² ΡΠΎΠΌ, ΡΡΠΎ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² react-native
- Π΅ΡΠ»ΠΈ Π½Π΅ Π²ΡΠ΅ - ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ ΠΎΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² appcompat
; Ρ.Π΅. Π‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, Π½Π°Π»ΠΈΡΠΈΠ΅ ΡΠ°ΠΊΠΎΠ³ΠΎ ΡΡΠΈΠ»Ρ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ:
At somewhere like: /android/app/src/main/res/values/styles.xml
<resources>
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
</style>
</resources>
ΠΡΠΎ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ ΠΏΠΎΡΠΎΠΌΡ, ΡΡΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ appcopmat
ΠΈΠ·Π½Π°ΡΠ°Π»ΡΠ½ΠΎ Π½Π΅ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅ΡΡΡ, ΠΈ, ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, view.getDrawable()
Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π½ΡΠ»Π΅Π²ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΠΈΠ· ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π²Ρ Π½Π΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΡΠ·ΡΠ²Π°ΡΡ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ΠΌΠ΅ΡΠΎΠ΄, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ: setUnderlineColor
ΠΈΠ»ΠΈ setColorTint
(Π£ ΠΊΠΎΠΌΠΌΡΡΠ°ΡΠΎΡΠΎΠ² ΡΠΎΠΆΠ΅ ΡΠ°ΠΊΠ°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°).
Π Π½Π°ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ react-native
Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΡ
Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ·ΠΆΠ΅ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π»ΠΈΡΡ Π² ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΡ
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ
, ΠΌΡ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΠΏΡΠΈΡΡΡΡΡΠ²ΠΈΠ΅ ΡΡΠΈΠ»Π΅ΠΉ Π² ΠΎΠΊΠΎΠ½ΡΠ°ΡΠ΅Π»ΡΠ½ΠΎΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ. ΠΠΎ ΠΊΡΠ°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅ΡΠ΅, ΡΠ΅ΠΏΠ΅ΡΡ ΠΌΡ Π·Π½Π°Π΅ΠΌ ΠΎΠ± ΡΡΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ΅ ΠΈ ΡΠ»ΡΡΡΠΈΠ»ΠΈ Π½Π°ΡΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ;)
ΠΠ°Π΄Π΅ΡΡΡ, ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ!
@sospedra ΠΠ°Ρ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ ΠΈΠΌΠ΅Π΅Ρ ΡΠΌΡΡΠ», Π½ΠΎ Ρ ΠΏΡΠΎΠ²Π΅ΡΠΈΠ» ΡΠ²ΠΎΠΉ ΠΊΠΎΠ΄ ΠΈ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ», ΡΡΠΎ appcompat
ΡΠΆΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π² ΠΌΠΎΠ΅ΠΌ ΡΡΠΈΠ»Π΅. ΠΡΠ»ΠΈ Π²Ρ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΠ΅ ΠΎΠ±Ρ
ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡΡΡ Π₯ΠΎΠΏΠ΄ΠΈΠ½Π³Π°, Ρ Π½Π΅Π³ΠΎ ΡΠ°ΠΊΠΆΠ΅ ΡΠΆΠ΅ Π΅ΡΡΡ appcompat
.
@Hopding
ΠΡΠΎΡ ΡΡΠΈΠ»Ρ ΠΎΡΠ»ΠΈΡΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ:
@WilliamAlexander , ΠΌΠ½Π΅ Π½Π΅ ΡΠ΄Π°Π»ΠΎΡΡ Π·Π°ΡΡΠ°Π²ΠΈΡΡ Π²Π°ΡΠ΅ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ°Π±ΠΎΡΠ°ΡΡ. ΠΠΎΠΆΠ΅ΡΠ΅ Π»ΠΈ Π²Ρ Π²ΠΊΠ»ΡΡΠΈΡΡ Π²Π΅ΡΡ ΡΡΠΈΠ»Ρ, ΠΊΠΎΡΠΎΡΡΠΉ Π²Π°ΠΌ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ΠΈΡ?
ΠΡΡΠ³Π°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°, Ρ ΠΊΠΎΡΠΎΡΠΎΠΉ Ρ ΡΡΠΎΠ»ΠΊΠ½ΡΠ»ΡΡ, Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΏΡΠΈ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ @Hopding ΡΡΠΎ ΠΏΠΎΠ²Π»ΠΈΡΠ»ΠΎ Π½Π° ΠΌΠ°ΠΊΠ΅Ρ ΠΌΠΎΠ΅Π³ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΡΡΡΠΎΡΠ½ΠΎΠ³ΠΎ Π²Π²ΠΎΠ΄Π° ΡΠ΅ΠΊΡΡΠ°, ΡΠ°ΠΊ ΡΡΠΎ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΠ° ΡΠ΅ΠΏΠ΅ΡΡ ΡΠ°ΡΡΠΈΡΠ½ΠΎ ΠΏΠΎΠΊΡΡΠ²Π°Π΅Ρ Π²Π²ΠΎΠ΄ ΡΠ΅ΠΊΡΡΠ°. ΠΡΡΡΠ²Π°Ρ Π²ΠΎΠ»ΠΎΡΡ, ΠΏΡΡΠ°ΡΡΡ ΡΠ΅ΡΠΈΡΡ ΡΡΡ, ΠΊΠ°Π·Π°Π»ΠΎΡΡ Π±Ρ, ΠΏΡΠΎΡΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ
ΠΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅: ΡΡΠΈΠ»Ρ @Hopding Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ Π½Π°ΠΏΠΈΡΠ°Π½ ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="android:editTextStyle">@style/AppEditTextStyle</item>
</style>
<style name="AppEditTextStyle" parent="@style/Widget.AppCompat.EditText">
<item name="android:background"><strong i="11">@android</strong>:color/transparent</item>
<item name="android:paddingTop">??dp</item>
<item name="android:paddingBottom">??dp</item>
</style>
ΠΠ½Π΅ ΠΏΡΠΈΡΠ»ΠΎΡΡ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΎΡΡΡΡΠΏΡ, ΡΡΠΎΠ±Ρ ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ Π½Π°ΡΡΡΠ΅Π½ΠΈΠ΅ ΠΌΠ°ΠΊΠ΅ΡΠ°.
@ gavin-gmlab.
ΠΠΎΡ.
`
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!-- Customize your theme here. -->
<!-- Main theme colors -->
<!-- your app branding color for the app bar -->
<item name="android:colorPrimary">@color/colorPrimary</item>
<!-- darker variant for the status bar and contextual app bars -->
<item name="android:colorPrimaryDark">@color/colorPrimaryDark</item>
<!-- theme UI controls like checkboxes and text fields -->
<item name="android:colorAccent">@color/colorAccent</item>
<item name="android:editTextStyle">@style/AppEditTextStyle</item>
<item name="editTextStyle">@style/AppEditTextStyle</item> <!-- For compatibility with the support library -->
<item name="android:windowIsTranslucent">true</item>
</style>
<style name="AppEditTextStyle" parent="@style/Widget.AppCompat.EditText">
<item name="android:background"><strong i="9">@android</strong>:color/transparent</item>
</style>
`
Π£Π΄Π°Π»Π΅Π½ΠΎ underlineColorAndroid = "transparent".
ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ» style.xml
ΡΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π΄Π»Ρ ΠΌΠ΅Π½Ρ
Π½ΠΈ ΠΎΠ΄Π½ΠΎ ΠΈΠ· ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΡ Π²ΡΡΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠΉ Π½Π΅ ΠΏΠΎΠΌΠΎΠ³Π»ΠΎ ΠΌΠ½Π΅, Π½ΠΎ, ΠΏΠΎ-Π²ΠΈΠ΄ΠΈΠΌΠΎΠΌΡ, Π·Π°ΠΊΡΡΡΠΈΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΏΠ»ΡΡ ΡΠΏΠ°ΠΊΠΎΠ²ΡΠΈΠΊ ΠΈ ΠΏΠΎΠ²ΡΠΎΡΠ½ΡΠΉ Π·Π°ΠΏΡΡΠΊ ΡΠ΄Π΅Π»Π°Π»ΠΈ ..
ΠΡΠΎΡΡΠΎ ΠΎΡΠΈΡΡΠΈΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈ Π·Π°ΠΏΡΡΡΠΈΡΠ΅ ΡΠ½ΠΎΠ²Π°
Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ @WilliamAlexander ΠΈ @Hopding Π·Π° ΠΈΡ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅, Π½ΠΎ ΠΊΠΎΠ³Π΄Π° Ρ ΠΌΠ΅Π½ΡΡ ΡΠΎΠ½, ΠΎΠ½ ΡΠ°ΠΊΠΆΠ΅ ΡΠ΄Π°Π»ΡΠ΅Ρ ΠΌΠΎΠΈ ΠΎΡΡΡΡΠΏΡ InputText. ΠΠΌΠ΅ΡΡΠΎ Π½Π΅Π³ΠΎ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π» backgroundTint, ΠΈ ΠΎΠ½ ΠΎΡΠ»ΠΈΡΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π±Π΅Π· ΠΊΠ°ΠΊΠΈΡ -Π»ΠΈΠ±ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² ΠΎΡΡΡΡΠΏΠ°Ρ .
`` ''
<style name="AppEditTextStyle" parent="@style/Widget.AppCompat.EditText">
<item name="backgroundTint"><strong i="12">@android</strong>:color/transparent</item>
</style>
`` ''
Π₯ΠΎΡΠΎΡΠΎ, Π΅ΡΡΡ Π»ΠΈ ΠΊΠ°ΠΊΠΎΠ΅-Π½ΠΈΠ±ΡΠ΄Ρ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ Expo, ΠΊΡΠΎΠΌΠ΅ ΠΈΠ·Π²Π»Π΅ΡΠ΅Π½ΠΈΡ?
@Twishka Π ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡ, Π²Π°ΠΌ ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠΈΠ΄Π΅ΡΡΡ
Π― Π΄Π°ΠΆΠ΅ Π½Π΅ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Ρ underlineColorAndroid
Π³Π΄Π΅-Π½ΠΈΠ±ΡΠ΄Ρ Π² ΠΌΠΎΠ΅ΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ, Π²ΡΠ΅ Π΅ΡΠ΅ Π΅ΡΡΡ ΡΡΠΎΡ ΠΆΡΡΠ½Π°Π» Π² ΠΌΠΎΠ΅ΠΉ ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ firebase. Π Ρ Π½Π΅ Π·Π½Π°Ρ, ΠΊΠ°ΠΊ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π΅ΡΠ΅ ΡΠ°Π·.
Fatal Exception: java.lang.NullPointerException: Attempt to invoke virtual method 'android.graphics.drawable.Drawable android.graphics.drawable.Drawable$ConstantState.newDrawable(android.content.res.Resources)' on a null object reference
at android.graphics.drawable.DrawableContainer$DrawableContainerState.createAllFutures(DrawableContainer.java:875)
at android.graphics.drawable.DrawableContainer$DrawableContainerState.getOpacity(DrawableContainer.java:1158)
at android.graphics.drawable.DrawableContainer.getOpacity(DrawableContainer.java:433)
at android.graphics.drawable.InsetDrawable.getOpacity(InsetDrawable.java:258)
at android.view.View.computeOpaqueFlags(View.java:15945)
at android.view.View.setBackgroundDrawable(View.java:20887)
at android.view.View.setBackground(View.java:20780)
at android.view.View.(View.java:5311)
at android.widget.TextView.(TextView.java:850)
at android.widget.EditText.(EditText.java:95)
at android.widget.EditText.(EditText.java:91)
at android.widget.EditText.(EditText.java:87)
at android.widget.EditText.(EditText.java:83)
at com.facebook.react.views.textinput.ReactEditText.(SourceFile:92)
at com.facebook.react.views.textinput.ReactTextInputManager.createViewInstance(SourceFile:100)
at com.facebook.react.views.textinput.ReactTextInputManager.createViewInstance(SourceFile:60)
at com.facebook.react.uimanager.ViewManager.createView(SourceFile:42)
at com.facebook.react.uimanager.NativeViewHierarchyManager.createView(SourceFile:260)
at com.facebook.react.uimanager.UIViewOperationQueue$CreateViewOperation.execute(SourceFile:200)
at com.facebook.react.uimanager.UIViewOperationQueue$DispatchUIFrameCallback.dispatchPendingNonBatchedOperations(SourceFile:1085)
at com.facebook.react.uimanager.UIViewOperationQueue$DispatchUIFrameCallback.doFrameGuarded(SourceFile:1056)
at com.facebook.react.uimanager.GuardedFrameCallback.doFrame(SourceFile:29)
at com.facebook.react.modules.core.ReactChoreographer$ReactChoreographerDispatcher.doFrame(SourceFile:134)
at com.facebook.react.modules.core.ChoreographerCompat$FrameCallback$1.doFrame(SourceFile:105)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:918)
at android.view.Choreographer.doCallbacks(Choreographer.java:732)
at android.view.Choreographer.doFrame(Choreographer.java:661)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:906)
at android.os.Handler.handleCallback(Handler.java:790)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:187)
at android.app.ActivityThread.main(ActivityThread.java:7025)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:514)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:888)
ΠΠΎΠ²ΠΎΡΡ ΠΎ ΡΠ²Π΅ΡΠ°Ρ
, Ρ ΠΌΠ΅Π½Ρ placeHolderTextColor ΠΈ borderColor ΡΠ°Π²Π½Ρ #acacac
Π° ΠΊΠΎΠ³Π΄Π° Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ ΠΊΠ°ΠΊΠ°Ρ-ΡΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΎΠΉ, borderColor ΡΠ°Π²Π΅Π½ red
. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Ρ Π΄Π°ΠΆΠ΅ Π½Π΅ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Ρ underlineColorAndroid
.
ΠΡΠ±Π°Ρ ΠΏΠΎΠΌΠΎΡΡ ΠΏΡΠΈΠ²Π΅ΡΡΡΠ²ΡΠ΅ΡΡΡ.
@mddanishansari ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ rn 0.56 underlineColorAndroid
ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ , Π²Π°ΠΌ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅, ΡΠΏΠΎΠΌΡΠ½ΡΡΠΎΠ΅ Π²ΡΡΠ΅.
@mddanishansari ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ rn 0.56
underlineColorAndroid
ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ , Π²Π°ΠΌ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅, ΡΠΏΠΎΠΌΡΠ½ΡΡΠΎΠ΅ Π²ΡΡΠ΅.
ΠΠΎΠ»ΡΡΠΎΠ΅ ΡΠΏΠ°ΡΠΈΠ±ΠΎ. Π― Π½Π΅ ΠΎΠΆΠΈΠ΄Π°Π» ΠΎΡΠ²Π΅ΡΠ° ΡΠ°ΠΊ Π±ΡΡΡΡΠΎ. ΠΡΠΎΠ±Π»Π΅ΠΌΠ° Π² ΡΠΎΠΌ, ΡΡΠΎ ΡΠΎΠ³Π΄Π° Π²Π΅ΡΡ Π΄ΡΡΠ³ΠΎΠΉ ΠΈΡΡ
ΠΎΠ΄Π½ΡΠΉ ΡΠΎΠ΄Π½ΠΎΠΉ ΡΠΎΠ½ EditText
ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠΎΠ·ΡΠ°ΡΠ΅Π½, ΡΡΠΎ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΡΡΠ°Π½Π½ΠΎ. ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΊΡΠ°Π½Ρ ΠΌΠΎΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΠ°ΠΊΠΆΠ΅ Π½Π°Ρ
ΠΎΠ΄ΡΡΡΡ Π² ΠΈΡΡ
ΠΎΠ΄Π½ΠΎΠΌ ΡΠΎΡΠΌΠ°ΡΠ΅ (Java).
ΠΠ½Π΅ ΠΏΡΠΎΡΡΠΎ Π±ΡΠ»ΠΎ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ, ΠΊΠ°ΠΊ Π²ΠΎΠΎΠ±ΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΅ΡΠΈΡΡ ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ. ΠΡΠ΅Π΄Π»Π°Π³Π°Π΅ΠΌΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΠΏΡΠΎΡΡΠΎΠΉ Π²Π·Π»ΠΎΠΌ. ΠΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ?
ΠΡΠΈΠ²Π΅Ρ, ΡΠ΅Π±ΡΡΠ°. ΠΡΠ°ΠΊ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ underlineColorAndroid ΠΊΠ°ΠΊ-ΡΠΎ Π²ΡΠ·ΡΠ²Π°Π΅Ρ ΡΡΠΎΡ ΡΠ±ΠΎΠΉ.
ΠΠΎ ΡΠ΅ΠΏΠ΅ΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΎ underlineColorAndroid.
ΠΠ°ΠΊ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ ΡΡΠΎΠ³ΠΎ ΠΈ Π²Π΅ΡΠ½ΡΡΡΡΡ ΠΊ styles.xml.?
Π‘ ΡΠ²Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ
ΠΠ° Π²ΡΡΠΊΠΈΠΉ ΡΠ»ΡΡΠ°ΠΉ ΡΡΠΎ ΠΊΠΎΠΌΡ-ΡΠΎ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ. Π ΠΌΠΎΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ Ρ ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎ ΠΎΡΠΏΡΠ°Π²ΠΈΠ» NaN Π²ΠΌΠ΅ΡΡΠΎ ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠ²Π΅ΡΠ°, ΠΊΠ°ΠΊ ΡΡΠΎ ΡΠ»ΡΡΠΈΠ»ΠΎΡΡ ΡΠΎ ΠΌΠ½ΠΎΠΉ Π² 'borderBottomLeftRadius'. Π£ ΠΌΠ΅Π½Ρ Π½Π΅ Π±ΡΠ»ΠΎ Π½ΠΈΠΊΠ°ΠΊΠΈΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ Ρ Iphone, ΡΠΎΠ»ΡΠΊΠΎ Ρ Android.
ΡΠ΅ΡΠ΅Π½ΠΈΡ Π² ΡΡΠΎΠΉ ΡΠ΅ΠΌΠ΅ Π½Π΅ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π΄Π»Ρ ΠΌΠ΅Π½Ρ. ΠΠ°ΠΆΠ΅ ΠΏΡΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ΅ underlineColorAndroid
Π΄Π»Ρ Π²ΡΠ΅Ρ
ΠΌΠΎΠΈΡ
ΡΠ΅ΠΊΡΡΠΎΠ²ΡΡ
Π²Ρ
ΠΎΠ΄ΠΎΠ² Π½Π° ΡΡΠΎ-ΡΠΎ Π½Π΅ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΠΎΠ΅ (Ρ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π» Ρ '#f00'
), Ρ Π²ΡΠ΅ Π΅ΡΠ΅ ΠΈΡΠΏΡΡΡΠ²Π°Ρ ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ.
ΠΠ»Ρ ΠΌΠ΅Π½Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ Π½Π΅ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ. Π£ ΠΌΠ΅Π½Ρ Π΅ΡΡΡ Π½Π°Π±ΠΎΡ TextInputs Π² ScrollView, ΠΈ ΠΌΠ½Π΅ Π½ΡΠΆΠ½ΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°Π· ΠΎΡΠΊΡΡΠ²Π°ΡΡ ΠΈ Π·Π°ΠΊΡΡΠ²Π°ΡΡ ΡΠΊΡΠ°Π½, ΡΡΠΎΠ±Ρ ΡΡΠΎ ΠΏΡΠΎΠΈΠ·ΠΎΡΠ»ΠΎ
ΠΡΠΈΠ±ΠΊΡ Π²ΡΠ·ΡΠ²Π°Π΅Ρ Π½Π΅ ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΠΎΡΡΡ, Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅
ΡΠΎΠ΄Π½ΠΎΠΉ ΡΠ²Π΅Ρ ΠΈΠ· ΡΠ΅Π°ΠΊΡΠΈΠ²Π½ΠΎΠ³ΠΎ ΡΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΠΏΠ°. ΠΡΠΎΡΡΠΎ ΠΏΠΎΡΡΠΈ Π²ΡΠ΅
Π΄Π΅Π»Π°Π΅Ρ ΠΈΡΡ
ΠΎΠ΄Π½ΠΎΠ΅ ΠΏΠΎΠ΄ΡΠ΅ΡΠΊΠΈΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΡΠΌ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΎΠΏΠΎΡΡ.
Π ΡΡΠ΅Π΄Ρ, 6 ΡΠ΅Π²ΡΠ°Π»Ρ 2019 Π³., 22:23 ΠΠ΄ΡΠΈΠ΅Π½ ΠΠ°ΠΉΠΊ [email protected] Π½Π°ΠΏΠΈΡΠ°Π»:
ΡΠ΅ΡΠ΅Π½ΠΈΡ Π² ΡΡΠΎΠΉ ΡΠ΅ΠΌΠ΅ Π½Π΅ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π΄Π»Ρ ΠΌΠ΅Π½Ρ. ΠΠ°ΠΆΠ΅ ΠΏΡΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ΅
underlineColorAndroid Π΄Π»Ρ Π²ΡΠ΅Ρ ΠΌΠΎΠΈΡ ΡΠ΅ΠΊΡΡΠΎΠ²ΡΡ Π²Π²ΠΎΠ΄ΠΎΠ² Π½Π° ΡΡΠΎ-ΡΠΎ Π½Π΅ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΠΎΠ΅
(Π― ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π» Ρ '# f00'), ΡΡΠ° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π²ΡΠ΅ Π΅ΡΠ΅ Π½Π΅ ΡΡΡΡΠ°Π½Π΅Π½Π°.ΠΠ»Ρ ΠΌΠ΅Π½Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ Π½Π΅ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ. Π£ ΠΌΠ΅Π½Ρ ΠΊΡΡΠ° TextInputs
Π² ScrollView, ΠΈ ΠΌΠ½Π΅ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΡΡΡ ΠΎΡΠΊΡΡΠ²Π°ΡΡ ΠΈ Π·Π°ΠΊΡΡΠ²Π°ΡΡ ΡΠΊΡΠ°Π½ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°Π·
ΡΡΠΎΠ±Ρ ΡΡΠΎ ΠΏΡΠΎΠΈΠ·ΠΎΡΠ»ΠΎ-
ΠΡ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΈ ΡΡΠΎ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΎΡΡΠ°Π²ΠΈΠ»ΠΈ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ.
ΠΡΠ²Π΅ΡΡΡΠ΅ Π½Π° ΡΡΠΎ ΠΏΠΈΡΡΠΌΠΎ Π½Π°ΠΏΡΡΠΌΡΡ, ΠΏΡΠΎΡΠΌΠΎΡΡΠΈΡΠ΅ Π΅Π³ΠΎ Π½Π° GitHub
https://github.com/facebook/react-native/issues/17530#issuecomment-461283498 ,
ΠΈΠ»ΠΈ ΠΎΡΠΊΠ»ΡΡΠΈΡΡ ΠΏΠΎΡΠΎΠΊ
https://github.com/notifications/unsubscribe-auth/AOG_BAlfs-GKED4gOuvtKlMD0vwEH-_zks5vK6ozgaJpZM4RaUHf
.
ΠΠ° Ρ Π²ΠΈΠΆΡ.
ΠΡΠΎΡΡΠΎ ΠΈΠ· Π»ΡΠ±ΠΎΠΏΡΡΡΡΠ²Π° Ρ ΠΏΠΎΠΏΡΡΠ°Π»ΡΡ ΡΠ΄Π°Π»ΠΈΡΡ ΠΎΡΡΡΠ΄Π° Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΠΎΡΡΠΈ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ.
https://github.com/facebook/react-native/commit/a3a98eb1c7fa0054a236d45421393874ce8ce558
ΠΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ, ΡΡΠΎ ΠΎΡΠΈΠ±ΠΊΠ° Π²ΡΠ΅ Π΅ΡΠ΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ Ρ ΠΌΠ΅Π½Ρ
Π― ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠΎ ΠΈΡΠΏΡΡΠ°Π» ΡΡΠΎΡ Π±Π°Π³ Π½Π° Π°Π½Π΄ΡΠΎΠΈΠ΄Π΅ RN 58.3. ΠΠ΅ Π±ΡΠ»ΠΎ ΡΠ²Π½ΠΎΠΉ ΡΠΈΡΠΌΡ ΠΈΠ»ΠΈ ΠΏΡΠΈΡΠΈΠ½Ρ, Π·Π° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΠΎΠ³ΠΎ, ΡΡΠΎ Π²ΡΡΠΊΠΈΠΉ ΡΠ°Π·, ΠΊΠΎΠ³Π΄Π° Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π» ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ TextInput
, Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π»Π° ΠΎΡΠΈΠ±ΠΊΠ°. ΠΠ°ΠΆΠ΅ Π΅ΡΠ»ΠΈ Π±Ρ Ρ ΠΎΡΠΎΠ±ΡΠ°Π·ΠΈΠ» TextInput Π±Π΅Π· ΡΠ΅ΠΊΠ²ΠΈΠ·ΠΈΡΠΎΠ² ΠΈΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, ΠΎΠ½ Π²ΡΠ΅ ΡΠ°Π²Π½ΠΎ Π²ΡΠ»Π΅ΡΠ΅Π» Π±Ρ.
Π― ΠΏΠΎΠΏΡΡΠ°Π»ΡΡ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΡΡΡΠΈΡΡ Metro ΠΈ ΡΠ±ΡΠΎΡΠΈΡΡ ΠΊΠ΅Ρ, Π½ΠΎ ΡΡΠΎ Π½Π΅ ΡΡΠ°Π±ΠΎΡΠ°Π»ΠΎ. ΠΠ½Π΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΏΡΠΈΡΠ»ΠΎΡΡ ΠΎΡΠΊΡΡΡΡ Android Studio ΠΈ ΠΏΠ΅ΡΠ΅ΡΠΎΠ±ΡΠ°ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΏΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΎ ΠΎΠ½ΠΎ Π½Π°ΡΠ°Π»ΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡ. ΠΠΎΠΆΠ΅Ρ Π±ΡΡΡ, ΡΡΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Ρ ΡΠ΅ΠΌ, ΡΡΠΎ gradle Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ ΡΠ²ΡΠ·ΡΠ²Π°Π΅Ρ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΈΠ»ΠΈ ΡΡΠΎ-ΡΠΎ Π² ΡΡΠΎΠΌ ΡΠΎΠ΄Π΅? ΠΠΎΡ ΠΎΠΆΠ΅, ΡΡΠΎ Π΄ΠΎΠ»Π³ΠΈΠΉ ΡΠ°Π½Ρ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ Ρ ΡΠ°Π±ΠΎΡΠ°Π» Π² ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Ρ ΠΎΡΠΎΡΠΈΡ 4 ΡΠ°ΡΠΎΠ² Π±Π΅Π· ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΡΡΠΊΠ°, ΠΏΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ Ρ ΠΌΠ΅Π½Ρ Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π° ΡΡΠ° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°, Π½ΠΎ Ρ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π½Π΅ ΠΌΠΎΠ³Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΡΡ, ΡΡΠΎ Π΅ΡΠ΅ ΠΌΠΎΠ³Π»ΠΎ Π΅Π΅ Π²ΡΠ·Π²Π°ΡΡ.
Π― ΡΡΠΎΠ»ΠΊΠ½ΡΠ»ΡΡ Ρ ΡΡΠΎΠΉ ΠΎΡΠΈΠ±ΠΊΠΎΠΉ Π² ββRN 58.0 Π½Π° ΡΡΡΡΠΎΠΉΡΡΠ²Π°Ρ
:
Redmi Note 6 Pro - Android 8.1
Mi A2 Lite - Android 9
WAS-LX1A - Android 8
ΠΠ½ΠΎΠ³Π΄Π° ΠΏΠΎΡΠ²Π»ΡΠ΅ΡΡΡ, Π³Π»ΡΠ΄Ρ Π² Sentry, Π½Π°Π΄Π΅ΡΡΡ, ΡΡΠΎ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ.
Π Π°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΠΈΡΠΏΡΠ°Π²ΡΡ ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ? ΠΎΠ±Ρ ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡΡΡ Π½Π°ΠΌ Π½Π΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ!
Ρ ΠΌΠ΅Π½Ρ ΡΠ°ΠΊΠΎΠΉ ΠΆΠ΅ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π΅
Π£ Π½Π°Ρ Π΅ΡΡΡ ΡΠ° ΠΆΠ΅ ΡΡΠ°ΡΡΠΈΡΠΎΠ²ΠΊΠ° ΡΡΠ΅ΠΊΠ°, ΡΡΠΎ ΠΈ Ρ Π΄Π²ΡΡ ΠΎΠΏΠΈΡΠ°Π½Π½ΡΡ Π²ΡΡΠ΅, Π½Π° React 0.59.
(Ρ DrawableContainerState.createAllFutures
Π½Π° 2-ΠΉ ΡΡΡΠΎΠΊΠ΅ ΡΡΠ°ΡΡΠΈΡΠΎΠ²ΠΊΠΈ ΡΡΠ΅ΠΊΠ°)
Fatal Exception: java.lang.NullPointerException: Attempt to invoke virtual method 'android.graphics.drawable.Drawable android.graphics.drawable.Drawable$ConstantState.newDrawable(android.content.res.Resources)' on a null object reference
at android.graphics.drawable.DrawableContainer$DrawableContainerState.createAllFutures(DrawableContainer.java:875)
at android.graphics.drawable.DrawableContainer$DrawableContainerState.getOpacity(DrawableContainer.java:1158)
at android.graphics.drawable.DrawableContainer.getOpacity(DrawableContainer.java:433)
at android.graphics.drawable.InsetDrawable.getOpacity(InsetDrawable.java:258)
at android.view.View.computeOpaqueFlags(View.java:15718)
at android.view.View.setBackgroundDrawable(View.java:20528)
at android.view.View.setBackground(View.java:20421)
at android.view.View.<init>(View.java:5248)
at android.widget.TextView.<init>(TextView.java:826)
at android.widget.EditText.<init>(EditText.java:88)
at android.widget.EditText.<init>(EditText.java:84)
at android.widget.EditText.<init>(EditText.java:80)
at android.widget.EditText.<init>(EditText.java:76)
at com.facebook.react.views.textinput.ReactEditText.<init>(ReactEditText.java:89)
at com.facebook.react.views.textinput.ReactTextInputManager.createViewInstance(ReactTextInputManager.java:102)
at com.facebook.react.views.textinput.ReactTextInputManager.createViewInstance(ReactTextInputManager.java:62)
at com.facebook.react.uimanager.ViewManager.createView(ViewManager.java:47)
at com.facebook.react.uimanager.NativeViewHierarchyManager.createView(NativeViewHierarchyManager.java:256)
at com.facebook.react.uimanager.UIViewOperationQueue$CreateViewOperation.execute(UIViewOperationQueue.java:200)
at com.facebook.react.uimanager.UIViewOperationQueue$DispatchUIFrameCallback.dispatchPendingNonBatchedOperations(UIViewOperationQueue.java:1109)
at com.facebook.react.uimanager.UIViewOperationQueue$DispatchUIFrameCallback.doFrameGuarded(UIViewOperationQueue.java:1080)
at com.facebook.react.uimanager.GuardedFrameCallback.doFrame(GuardedFrameCallback.java:29)
at com.facebook.react.modules.core.ReactChoreographer$ReactChoreographerDispatcher.doFrame(ReactChoreographer.java:166)
at com.facebook.react.modules.core.ChoreographerCompat$FrameCallback$1.doFrame(ChoreographerCompat.java:84)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1027)
at android.view.Choreographer.doCallbacks(Choreographer.java:841)
at android.view.Choreographer.doFrame(Choreographer.java:769)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1015)
at android.os.Handler.handleCallback(Handler.java:794)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:176)
at android.app.ActivityThread.main(ActivityThread.java:6635)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:547)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:823)
Π― ΠΏΠΎΠ»ΡΡΠΈΠ» ΡΡ ΠΆΠ΅ ΡΡΠ°ΡΡΠΈΡΠΎΠ²ΠΊΡ ΡΡΠ΅ΠΊΠ°, ΡΡΠΎ ΠΈ Π²ΡΡΠ΅, ΠΏΠΎΡΠ»Π΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π΅Π½Π½ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ Ρ 0.58.6 Π΄ΠΎ 0.59.1 Π²ΡΠ΅Π³ΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°ΡΠΎΠ² Π½Π°Π·Π°Π΄. ΠΠΎΡΡΡ, ΡΡΠΎ ΡΡΠ°Π½Π΅Ρ ΡΠ΅ΡΡΠ΅Π·Π½ΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ.
ΠΡΠ±ΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΡΡΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ?
@sunnylqm Π΅ΡΡΡ Π»ΠΈ ΡΠΏΠΎΡΠΎΠ± ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π΄Π»Ρ underlineColorAndroid
Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ null, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΠ½ΠΎ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΎ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ?
@pedrosimao @tamdao
ΠΡ Π΄ΠΎΠ»ΠΆΠ½Ρ Π²ΡΡΡΠ½ΡΡ ΡΠ΄Π°Π»ΠΈΡΡ ΡΡΡ ΡΡΡΠΎΠΊΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ° ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ, ΡΠ°ΠΊΠΎΠ³ΠΎ ΠΊΠ°ΠΊ patch-package . Π Π΅ΡΠ»ΠΈ Π²Ρ Π²ΡΠ΅ ΠΆΠ΅ Ρ
ΠΎΡΠΈΡΠ΅ ΡΠ΄Π΅Π»Π°ΡΡ ΠΏΠΎΠ΄ΡΠ΅ΡΠΊΠΈΠ²Π°Π½ΠΈΠ΅ Π½Π΅Π²ΠΈΠ΄ΠΈΠΌΡΠΌ, Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π΅Π³ΠΎ Π² ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡΠ΄Ρ xml-ΠΊΠΎΠ½ΡΠΈΠ³ .
Π’Π°ΠΊ ΡΡΠΎ ΠΊΠ»ΡΡΠ΅Π²ΡΠΌ ΠΌΠΎΠΌΠ΅Π½ΡΠΎΠΌ ΡΠ²Π»ΡΠ΅ΡΡΡ not set any value to underlineColorAndroid anywhere
ΠΏΠΎΠΊΠ° ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡΠ΄Ρ Π³Π΅ΡΠΎΠΉ Π½Π΅ Π½Π°ΠΉΠ΄Π΅Ρ ΡΠΏΠΎΡΠΎΠ± ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ ΡΡΠΎ.
Π― ΠΏΠΎΠ»ΡΡΠΈΠ» ΡΡΡ ΠΎΡΠΈΠ±ΠΊΡ ΡΠ΅Π³ΠΎΠ΄Π½Ρ
Π Π°Π½ΡΡΠ΅ ΠΎΠ½ ΡΠ°Π±ΠΎΡΠ°Π» Ρ
ΠΎΡΠΎΡΠΎ, Π½ΠΎ ΠΏΠΎΡΠ»Π΅ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΠ±ΠΎΡΠΊΠΈ Π½Π° ΠΌΠΎΠ΅ΠΌ ΡΡΡΡΠΎΠΉΡΡΠ²Π΅ ΠΏΡΠΎΠΈΠ·ΠΎΡΠ»Π° ΠΎΡΠΈΠ±ΠΊΠ°
ΠΠ»Ρ ΠΌΠ΅Π½Ρ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΡΡΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ - ΡΠ΄Π°Π»ΠΈΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° ΡΡΡΡΠΎΠΉΡΡΠ²Π΅, Π° Π·Π°ΡΠ΅ΠΌ ΠΏΠ΅ΡΠ΅ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π²ΡΡΡΠΎΠ΅Π½Π½ΠΎΠ³ΠΎ Π² ΡΠ΅Π°ΠΊΡΠΈΡ run-android.
ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΠΈΡΡΠ΅Π·Π»Π°
ΠΡΡΠ°ΡΠΈ, Ρ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΠ΅ΠΊΠ²ΠΈΠ·ΠΈΡΡ underlineColorAndroid, ΠΏΠΎΡΡΠΎΠΌΡ ΠΎΠ½ Π½Π΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ, ΡΡΠΎ Π±Ρ Ρ Π½ΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΠ» ΠΈΠ»ΠΈ ΠΎΡΠΊΠ»ΡΡΠΈΠ» ΠΊΠ°ΠΊΠΎΠ΅-Π»ΠΈΠ±ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΡΡΠΈΡ ΡΠ΅ΠΊΠ²ΠΈΠ·ΠΈΡΠΎΠ²
ΠΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎ, ΠΊΠΎΠ³Π΄Π° Π²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ΅ΠΊΡΡΠΎΠ²ΡΠ΅ ΠΏΠΎΠ»Ρ Π²Π½ΡΡΡΠΈ scrollview. underlineColorAndroid ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π²ΡΠ΅Π³Π΄Π°, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΎΠ½ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ .
Π‘ΠΎ ΠΌΠ½ΠΎΠΉ ΡΠ»ΡΡΠΈΠ»ΠΎΡΡ ΠΈ ΡΠ΅Π³ΠΎΠ΄Π½Ρ, Π½Π° Expo.
ΠΡΠ»ΠΈ Π²Ρ Π½Π°Ρ ΠΎΠ΄ΠΈΡΠ΅ΡΡ Π½Π° Expo, Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ Π·Π°ΠΊΡΡΡΡ ΡΠ΅ΡΠ²Π΅Ρ Π²ΡΡΡΠ°Π²ΠΊΠΈ, Π²Π°ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Expo. Π ΡΠ½ΠΎΠ²Π° ΠΎΡΠΊΡΡΡΡ ΠΈΡ .
ΠΠ½Π°ΡΠ΅ ΠΎΡΠΈΠ±ΠΊΠ° Π½Π΅ ΠΈΡΡΠ΅Π·Π½Π΅Ρ.
Π‘ΠΎ ΠΌΠ½ΠΎΠΉ ΡΠ»ΡΡΠΈΠ»ΠΎΡΡ, Π½Π° Expo.
ΠΠΎ ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ ΠΏΡΠΈΡΠΈΠ½Π΅ Π² ΡΠΎΠ½ΠΎΠ²ΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅ Π±ΡΠ»ΠΎ Π΄Π²Π° ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° ΠΌΠΎΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΠΎΠ³Π΄Π° Ρ Π½Π°ΠΆΠ°Π» ΠΊΠ²Π°Π΄ΡΠ°ΡΠ½ΡΡ ΠΊΠ½ΠΎΠΏΠΊΡ Android ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ Β«ΠΠ±Π·ΠΎΡΒ», ΡΡΠΎΠ±Ρ ΡΠ²ΠΈΠ΄Π΅ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π² ΠΏΠ°ΠΌΡΡΠΈ, Ρ ΡΠ²ΠΈΠ΄Π΅Π» ΡΡΠΈ Π΄Π²Π° ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° ΡΠ²ΠΎΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ... ΠΊΠΎΠ³Π΄Π° Ρ Π·Π°ΠΊΡΡΠ» ΠΈΡ ΠΈ ΡΠ½ΠΎΠ²Π° Π·Π°ΠΏΡΡΡΠΈΠ» ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΡΡΠ° ΠΎΡΠΈΠ±ΠΊΠ° Π±ΠΎΠ»ΡΡΠ΅ Π½Π΅ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π»Π°ΡΡ.
ΠΡΠ°ΠΊ, ΠΊΠ°ΠΊ ΡΠ΅Π±ΡΡΠ° ΡΠΊΠ°Π·Π°Π»ΠΈ ΡΠ°Π½Π΅Π΅, Π·Π°ΠΊΡΠΎΠΉΡΠ΅ Π²ΡΠ΅ ΠΈ ΡΠ½ΠΎΠ²Π° Π·Π°ΠΏΡΡΡΠΈΡΠ΅, ΡΡΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ
Π― ΠΏΠΎΡΡΠ°ΡΠΈΠ» 3 ΡΠ°ΡΠ°, ΠΏΡΡΠ°ΡΡΡ Π²ΡΡΡΠ½ΠΈΡΡ ΡΡΡ ΠΎΡΠΈΠ±ΠΊΡ, Π½ΠΎ Π±Π΅Π·ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ½ΠΎ, Π·Π°ΡΠ΅ΠΌ Ρ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΠ» ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° ΡΠ²ΠΎΠΉ ΡΠΌΡΠ»ΡΡΠΎΡ Android, ΠΈ ΠΎΡΠΈΠ±ΠΊΠ° ΠΈΡΡΠ΅Π·Π»Π°.
ΠΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅ 0.59.4, ΡΡΠΎΠ±Ρ ΡΠ·Π½Π°ΡΡ, Π½Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ Π»ΠΈ Ρ Π²Π°Ρ ΡΡΠΎΠ³ΠΎ ΡΠ±ΠΎΡ.
@sunnylqm ΠΡΠ΅ Π΅ΡΠ΅ ΡΡΠ°Π»ΠΊΠΈΠ²Π°ΡΡΡ Ρ ΡΡΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ Π½Π° 0.59.5.
Android: 8.0.0
Android Build: R16NW
Manufacturer: samsung
Model: SM-G955F
java.lang.NullPointerException: Attempt to invoke virtual method 'android.graphics.drawable.Drawable android.graphics.drawable.Drawable$ConstantState.newDrawable(android.content.res.Resources)' on a null object reference
at android.graphics.drawable.DrawableContainer$DrawableContainerState.createAllFutures(DrawableContainer.java:875)
at android.graphics.drawable.DrawableContainer$DrawableContainerState.getOpacity(DrawableContainer.java:1158)
at android.graphics.drawable.DrawableContainer.getOpacity(DrawableContainer.java:433)
at android.graphics.drawable.InsetDrawable.getOpacity(InsetDrawable.java:258)
at android.view.View.computeOpaqueFlags(View.java:16791)
at android.view.View.setBackgroundDrawable(View.java:21710)
at android.view.View.setBackground(View.java:21603)
at android.view.View.<init>(View.java:5547)
at android.widget.TextView.<init>(TextView.java:1135)
at android.widget.EditText.<init>(EditText.java:107)
at android.widget.EditText.<init>(EditText.java:103)
at android.widget.EditText.<init>(EditText.java:99)
at android.widget.EditText.<init>(EditText.java:95)
at com.facebook.react.views.textinput.c.<init>
at com.facebook.react.views.textinput.ReactTextInputManager.createViewInstance
at com.facebook.react.views.textinput.ReactTextInputManager.createViewInstance
at com.facebook.react.uimanager.ViewManager.createView
at com.facebook.react.uimanager.k.a
at com.facebook.react.uimanager.aq$e.a
at com.facebook.react.uimanager.aq$h.c
at com.facebook.react.uimanager.aq$h.a
at com.facebook.react.uimanager.e.b
at com.facebook.react.modules.core.e$b.b
at com.facebook.react.modules.core.a$a$1.doFrame
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:909)
at android.view.Choreographer.doCallbacks(Choreographer.java:723)
at android.view.Choreographer.doFrame(Choreographer.java:655)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:897)
at android.os.Handler.handleCallback(Handler.java:789)
at android.os.Handler.dispatchMessage(Handler.java:98)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6938)
at java.lang.reflect.Method.invoke(Method.java:-2)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374)
Π£ ΠΌΠ΅Π½Ρ Π΅ΡΡΡ ΡΡΠ° ΠΎΡΠΈΠ±ΠΊΠ° Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ TextInputs,
ΠΠΎΠ³Π΄Π° Ρ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΡΡΠΊΠ°Ρ ΡΠ±ΠΎΡΠΊΡ ΠΈΠ»ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΎΠ½ΠΎ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΡΡ ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΡΡΡ, ΠΊΠΎΠ³Π΄Π° Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡ ΠΏΠΎΠ²ΡΠΎΡΠ½ΡΡ Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π²ΠΎ Π²ΡΠΎΡΠΎΠΉ ΡΠ°Π·.
Android: 9
Π’Π΅Π»Π΅ΡΠΎΠ½: SAMSUNG Galaxy note 9
ΠΠΎΠ΄Π΅Π»Ρ: SM-N960F / DS
ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½Π°Ρ Π²Π΅ΡΡΠΈΡ ΡΠ΅Π°ΠΊΡΠΈΠΈ "0.58.5"
ΠΠΎΠΏΡΡΠΊΠ° Π²ΡΠ·Π²Π°ΡΡ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ android.graphics.drawable.Drawable android.graphics.drawable.Drawable $ ConstantState.newDrawable (android.content.res.Resources) Π΄Π»Ρ ΡΡΡΠ»ΠΊΠΈ Π½Π° Π½ΡΠ»Π΅Π²ΠΎΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ
createAllFutures
DrawableContainer. Java: 875
getOpacity
DrawableContainer. Java: 1158
getOpacity
DrawableContainer. Java: 433
getOpacity
InsetDrawable. Java: 258
computeOpaqueFlags
ΠΠΎΡΠΌΠΎΡΡΠ΅ΡΡ. java: 18165
setBackgroundDrawable
ΠΠΎΡΠΌΠΎΡΡΠ΅ΡΡ. java: 23335
setBackground
ΠΠΎΡΠΌΠΎΡΡΠ΅ΡΡ. java: 23228
ΠΠΎΡΠΌΠΎΡΡΠ΅ΡΡ. java: 5952
TextView. Java: 1108
Π Π΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ΅ΠΊΡΡ. Java: 106
Π Π΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ΅ΠΊΡΡ. Java: 102
Π Π΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ΅ΠΊΡΡ. Java: 98
Π Π΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ΅ΠΊΡΡ. Java: 94
setThemedContext
ReactTextInputShadowNode. Java: 73
createView
UII ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ. Java: 288
createView
UIManagerModule. java: 449
Π²ΡΠ·ΡΠ²Π°ΡΡ
Method.java
Π²ΡΠ·ΡΠ²Π°ΡΡ
JavaMethodWrapper. java: 372
Π²ΡΠ·ΡΠ²Π°ΡΡ
JavaModuleWrapper. Java: 158
Π±Π΅ΠΆΠ°ΡΡ
NativeRunnable.java
handleCallback
ΠΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ. java: 873
dispatchMessage
ΠΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ. Java: 99
dispatchMessage
MessageQueueThreadHandler. java: 29
ΠΏΠ΅ΡΠ»Ρ
Looper. Java: 214
Π±Π΅ΠΆΠ°ΡΡ
MessageQueueThreadImpl. Java: 192
Π±Π΅ΠΆΠ°ΡΡ
ΠΠΈΡΡ. Java: 764
Π£ ΠΌΠ΅Π½Ρ ΡΠ°ΠΊΠ°Ρ ΠΆΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Ρ Samsung Note 8, Android Π²Π΅ΡΡΠΈΠΈ 9 ΠΈ React native 0.57.0.
ΠΠ΄Π΅ΡΡ ΡΠ° ΠΆΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°. React Native 0.59.0. ΠΡΠΎΠ±Π»Π΅ΠΌΠ° Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΠ΅ ΡΠ΄Π°Π»ΠΎΡΡ ΡΠ²ΠΈΠ΄Π΅ΡΡ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ΡΠ°Π±Π»ΠΎΠ½ Π΄Π»Ρ Π΅Π³ΠΎ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΡ. ΠΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΊΠ°ΠΊ Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ, ΡΠ°ΠΊ ΠΈ Π² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π΅Π½Π½ΠΎΠΉ ΡΡΠ΅Π΄Π΅.
ΠΡΠ° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΠ»Π° ΠΊ ΡΠ±ΠΎΡ Π½Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π΅Π½Π½ΠΎΠΉ ΡΡΠ΅Π΄Π΅. ΠΡΠΎ Π½Π΅ΠΏΡΠΈΡΡΠ½ΡΠΉ Π±Π°Π³, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π΅Π³ΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠ»ΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ. ΠΡ Π½Π°ΡΠ»ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠΎΠ±Π΅ΡΠ°ΡΡΠ΅Π΅ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π΄Π»Ρ Π½Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΈ Ρ Ρ ΠΎΡΠ΅Π» Π±Ρ ΠΏΠΎΠ΄Π΅Π»ΠΈΡΡΡΡ ΡΠ²ΠΎΠΈΠΌΠΈ Π²ΡΠ²ΠΎΠ΄Π°ΠΌΠΈ Π·Π΄Π΅ΡΡ, ΡΡΠΎΠ±Ρ, Π½Π°Π΄Π΅ΡΡΡ, ΡΡΠΊΠΎΠ½ΠΎΠΌΠΈΡΡ Π²ΡΠ΅ΠΌΡ ΠΈ ΡΠ°Π·ΠΎΡΠ°ΡΠΎΠ²Π°Π½ΠΈΠ΅ Π΄ΡΡΠ³ΠΈΡ .
Π’Π΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈΠ΅ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠΈ ΠΈ Π²Π΅ΡΡΠΈΠΈ
ΠΡΠ° ΠΎΡΠΈΠ±ΠΊΠ° ΠΏΡΠΈΠ²Π΅Π»Π° ΠΊ ΡΠ±ΠΎΡ Π½Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π° ΡΡΡΡΠΎΠΉΡΡΠ²Π°Ρ Samsung, Google ΠΈ LG Android. Π£ Π½Π°Ρ Π±ΡΠ»ΠΈ ΠΎΡΡΠ΅ΡΡ ΠΎ ΡΠ±ΠΎΡΡ ΠΈΠ· ΡΠ»Π΅Π΄ΡΡΡΠΈΡ Π²Π΅ΡΡΠΈΠΉ Android:
8.0.0
8.1.0
7.1.1
ΠΠ°ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ:
react-native
: 0.53.0react
: 16.2.0Π§ΡΠΎ Π²ΡΠ·ΡΠ²Π°Π΅Ρ ΡΠ±ΠΎΠΉ
ΠΠ°ΠΊ ΠΎΡΠΌΠ΅ΡΠ°Π»ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ Π² ΡΡΠΎΠΌ ΠΏΠΎΡΠΎΠΊΠ΅, ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°, ΠΏΠΎΡ ΠΎΠΆΠ΅, Π²ΡΠ·Π²Π°Π½Π° ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ²
TextInput
,FlatList
ΠΈScrollView
. Π Π½Π°ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ Ρ Π½Π°Ρ Π΅ΡΡΡ ΡΠΊΡΠ°Π½, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ ΠΎΠ΄ΠΈΠ½TextInput
ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅ΠΌΡΠΉ Π½Π°Π΄FlatList
. ΠΡΠΈ Π½Π°ΠΆΠ°ΡΠΈΠΈ Π½Π° ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π²FlatList
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΈΡ Π½Π° Π½ΠΎΠ²ΡΠΉ ΡΠΊΡΠ°Π½, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ ΡΠΎΡΠΌΡ. ΠΠΎΡΠ½Π΅Π²ΠΎΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ ΡΡΠΎΠΉ ΡΠΎΡΠΌΡ - ΡΡΠΎScrollView
ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΡΠ΄ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ²TextInput
(Π²ΠΌΠ΅ΡΡΠ΅ Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΠΌΠΈ ΠΊΠ½ΠΎΠΏΠΊΠ°ΠΌΠΈ ΠΈ Π΄ΡΡΠ³ΠΈΠΌΠΈ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌΡΠΌΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°ΠΌΠΈ). ΠΠ°ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π²ΡΠ»Π΅ΡΠ°Π΅Ρ, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π½Π°ΠΆΠΈΠΌΠ°Π΅Ρ Π½Π° ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΡΡΠΈΡFlatList
ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² (ΠΎΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π½Π΅ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π·).ΠΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΡΠ»ΠΎΠΆΠ½ΠΎ. Π€Π°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ, ΠΌΡ Π½Π΅ ΡΠΌΠΎΠ³Π»ΠΈ ΡΡΠΎΠ³ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ. ΠΠΎ ΠΌΡ Π·Π½Π°Π΅ΠΌ, ΡΡΠΎ ΡΠ±ΠΎΠΉ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π½Π° ΡΡΠΎΠΌ ΡΡΠ°ΠΏΠ΅ ΡΠ°Π±ΠΎΡΠ΅Π³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ°, ΠΏΡΠΎΡΠΌΠ°ΡΡΠΈΠ²Π°Ρ Π·Π°ΠΏΠΈΡΠΈ ΡΠ΅Π°Π½ΡΠ° Appsee.
ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΌΡ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, Π½Π°ΠΌ ΠΏΡΠΈΡΠ»ΠΎΡΡ ΠΏΠΎΠ»Π°Π³Π°ΡΡΡΡ Π½Π° ΠΆΡΡΠ½Π°Π»Ρ ΡΠ±ΠΎΠ΅Π² ΠΈΠ· Appsee Π΄Π»Ρ Π΅Π΅ ΠΎΡΠ»Π°Π΄ΠΊΠΈ. Π― ΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π» ΡΡΠ°ΡΡΠΈΡΠΎΠ²ΠΊΡ ΡΡΠ΅ΠΊΠ° ΠΈΠ· ΠΎΡΡΠ΅ΡΠΎΠ² ΠΎ ΡΠ±ΠΎΡΡ Π½ΠΈΠΆΠ΅ (ΠΈ ΠΏΡΠΎΠΏΡΡΡΠΈΠ» Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΠΌΠ½ΡΠ΅ ΡΡΠ°ΡΡΠΊΠΈ). ΠΡΠΎ Π±ΠΎΠ»Π΅Π΅ ΠΈΠ»ΠΈ ΠΌΠ΅Π½Π΅Π΅ ΠΈΠ΄Π΅Π½ΡΠΈΡΠ½ΠΎ ΡΡΠ°ΡΡΠΈΡΠΎΠ²ΠΊΠ°ΠΌ ΡΡΠ΅ΠΊΠ°, ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Π½ΡΠΌ Π² ΡΡΠΎΠΉ Π²Π΅ΡΠΊΠ΅ Π΄ΡΡΠ³ΠΈΠΌΠΈ:
0 java.lang.NullPointerException: Attempt to invoke virtual method 'android.graphics.drawable.Drawable android.graphics.drawable.Drawable$ConstantState.newDrawable(android.content.res.Resources)' on a null object reference 1 at android.graphics.drawable.DrawableContainer$DrawableContainerState.createAllFutures(DrawableContainer.java:875) 2 at android.graphics.drawable.DrawableContainer$DrawableContainerState.getOpacity(DrawableContainer.java:1158) 3 at android.graphics.drawable.DrawableContainer.getOpacity(DrawableContainer.java:433) 4 at android.graphics.drawable.InsetDrawable.getOpacity(InsetDrawable.java:258) 5 at android.view.View.computeOpaqueFlags(View.java:16900) 6 at android.view.View.setBackgroundDrawable(View.java:21824) 7 at android.view.View.setBackground(View.java:21717) 8 at android.view.View.<init>(View.java:5577) 9 at android.widget.TextView.<init>(TextView.java:1144) ... 13 at android.widget.EditText.<init>(EditText.java:96) 14 at com.facebook.react.views.textinput.ReactEditText.<init>(ReactEditText.java:91) 15 at com.facebook.react.views.textinput.ReactTextInputManager.createViewInstance(ReactTextInputManager.java:91) 16 at com.facebook.react.views.textinput.ReactTextInputManager.createViewInstance(ReactTextInputManager.java:61) ... 35 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1408)
ΠΡΡΠΎΡΠ½ΠΈΠΊ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ
ΠΡΠΎΡΠΈΡΠ°Π² ΡΡΡ Π²Π΅ΡΠΊΡ ΠΈ ΠΏΡΠΎΠ²Π΅Π΄Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°ΡΠΎΠ² ΠΈΠ»ΠΈ ΠΏΡΠΎΠ²Π΅Π΄Ρ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅, Ρ Π½Π°ΡΠ΅Π» ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ
underlineColorAndroid
prop Π² ΡΠ°ΠΉΠ»Π΅ReactTextInputManager.java
:@ReactProp(name = "underlineColorAndroid", customType = "Color") public void setUnderlineColor(ReactEditText view, <strong i="42">@Nullable</strong> Integer underlineColor) { // Drawable.mutate() can sometimes crash due to an AOSP bug: // See https://code.google.com/p/android/issues/detail?id=191754 for more info Drawable background = view.getBackground(); Drawable drawableToMutate = background.getConstantState() != null ? background.mutate() : background; if (underlineColor == null) { drawableToMutate.clearColorFilter(); } else { drawableToMutate.setColorFilter(underlineColor, PorterDuff.Mode.SRC_IN); } }
ΠΡΡΠ΅Ρ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅, ΡΡΡΠ»ΠΊΠ° Π½Π° ΠΊΠΎΡΠΎΡΡΠΉ Π΅ΡΡΡ Π² ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ, ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΡΡ ΡΡΠ°ΡΡΠΈΡΠΎΠ²ΠΊΡ ΡΡΠ΅ΠΊΠ°:
java.lang.NullPointerException: Attempt to invoke virtual method 'android.graphics.drawable.Drawable android.graphics.drawable.Drawable$ConstantState.newDrawable()' on a null object reference at android.graphics.drawable.LayerDrawable$ChildDrawable.<init>(LayerDrawable.java:1723) at android.graphics.drawable.LayerDrawable$LayerState.<init>(LayerDrawable.java:1792) at android.graphics.drawable.LayerDrawable.createConstantState(LayerDrawable.java:152) at android.graphics.drawable.LayerDrawable.mutate(LayerDrawable.java:1652)
ΠΡΠΎ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ ΡΡΠ°ΡΡΠΈΡΠΎΠ²ΠΊΠ΅ ΡΡΠ΅ΠΊΠ°, Ρ ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΌΡ ΡΡΠ°Π»ΠΊΠΈΠ²Π°Π΅ΠΌΡΡ Π² Π½Π°ΡΠ΅ΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ. Π― Π½Π΅ ΠΏΡΠ΅ΡΠ΅Π½Π΄ΡΡ Π½Π° ΠΏΠΎΠ»Π½ΠΎΠ΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, Π½ΠΎ Π²ΠΏΠΎΠ»Π½Π΅ Π²Π΅ΡΠΎΡΡΠ½ΠΎ, ΡΡΠΎ ΠΏΡΠΈΡΠΈΠ½Π° ΡΠ±ΠΎΡ Π½Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π² ΡΠ°Π±ΠΎΡΠ΅ΠΉ ΡΡΠ΅Π΄Π΅ ΡΠ²ΡΠ·Π°Π½Π° Ρ ΡΡΠ°Π±Π°ΡΡΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΎΡΠΈΠ±ΠΊΠΈ
Drawable.mutate()
. ΠΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ ΠΏΡΡΠ°Π΅ΠΌΡΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎunderlineColorAndroid
Π΄Π»Ρ Π½Π°ΡΠ΅Π³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°TextInput
(ΠΈ, ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π²ΡΠ·ΡΠ²Π°Π΅ΠΌ ΠΌΠ΅ΡΠΎΠ΄ReactTextInputManager.setUnderlineColor
).ΠΠ°ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ΅Π½Π΄Π΅ΡΠΈΠ»ΠΎ
TextInput
ΡΠΎ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌΠΈ ΡΠ΅ΠΊΠ²ΠΈΠ·ΠΈΡΠ°ΠΌΠΈ, ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ Π±ΡΠ»ΠΎunderlineColorAndroid="transparent"
:<TextInput ref={this.handleRef} value={this.props.value} autoCorrect={false} autoCapitalize="none" underlineColorAndroid="transparent" onSubmitEditing={this.handleSubmit} onChangeText={this.props.onChangeText} onFocus={this.handleFocused} onBlur={this.handleBlur} clearButtonMode="always" />
ΠΠ°ΠΊ ΠΌΡ ΡΡΠΎ ΠΈΡΠΏΡΠ°Π²ΠΈΠ»ΠΈ
ΠΠ°ΠΌ Π½ΡΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΡΡΡ ΠΎΠΏΠΎΡΡ, ΡΡΠΎΠ±Ρ ΡΠ±ΡΠ°ΡΡ ΠΏΠΎΠ΄ΡΠ΅ΡΠΊΠΈΠ²Π°Π½ΠΈΠ΅ Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ²
TextInput
Π² Π½Π°ΡΠ΅ΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ. ΠΠΎ, ΡΡΠ΄Ρ ΠΏΠΎ Π½Π°ΡΠΈΠΌ Π²ΡΠ²ΠΎΠ΄Π°ΠΌ, Π΅Π³ΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΠΏΡΠΎΠΏΡΡΠΊΠ° Π·Π°ΠΏΡΡΠΊΠ°Π» ΠΎΡΠΈΠ±ΠΊΡ Android, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΈΠ½ΠΎΠ³Π΄Π° ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΠ»Π° ΠΊ ΡΠ±ΠΎΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.Π ΡΡΠ°ΡΡΡΡ, Π΅ΡΡΡ Π΅ΡΠ΅ ΠΎΠ΄ΠΈΠ½ ΡΠΏΠΎΡΠΎΠ± ΡΠ±ΡΠ°ΡΡ ΠΏΠΎΠ΄ΡΠ΅ΡΠΊΠΈΠ²Π°Π½ΠΈΠ΅ Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ²
TextInput
Π½Π° Android. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΡΡΡΠΎΠΊΡ Π² ΡΠ°ΠΉΠ»android/app/src/main/res/values/styles.xml
:<resources> <!-- Base application theme. --> <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> <item name="android:windowExitAnimation"><strong i="65">@android</strong>:anim/fade_out</item> <item name="android:windowBackground">@drawable/splash_screen</item> + <item name="android:editTextBackground"><strong i="66">@android</strong>:color/transparent</item> </style> </resources>
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ Ρ ΡΠ°ΠΊΠΆΠ΅ Π²ΠΈΠ΄Π΅Π» ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π½ΠΎ ΡΡΠΎ Π½Π΅ ΡΠ½ΡΠ»ΠΎ Π΄Π»Ρ Π½Π°Ρ ΠΏΠΎΠ΄ΡΠ΅ΡΠΊΠΈΠ²Π°Π½ΠΈΡ:
<resources> <!-- Base application theme. --> <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> <item name="android:windowExitAnimation"><strong i="71">@android</strong>:anim/fade_out</item> <item name="android:windowBackground">@drawable/splash_screen</item> </style> + <!-- This did *not* work for us... --> + <style name="AppEditTextStyle" parent="@style/Widget.AppCompat.EditText"> + <item name="android:background"><strong i="72">@android</strong>:color/transparent</item> + </style> </resources>
ΠΡΠΎ Π½Π΅ ΡΠ΅ΡΠ°Π΅Ρ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ. ΠΡΠΎ ΠΏΡΠΎΡΡΠΎ ΠΎΠ±Ρ ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ ΠΎΡΠΊΠ°Π· ΠΎΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ
underlineColorAndroid
prop Π² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°ΡTextInput
.Π― ΠΏΠΎΠΊΠ° Π½Π΅ ΠΌΠΎΠ³Ρ Ρ ΡΠ²Π΅ΡΠ΅Π½Π½ΠΎΡΡΡΡ ΡΠΊΠ°Π·Π°ΡΡ, ΡΡΠΎ ΡΡΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΌΠ½Π΅ Π½Π΅ ΡΠ΄Π°Π»ΠΎΡΡ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎ. ΠΡ Π²Π½Π΅Π΄ΡΠΈΠΌ ΡΡΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π² ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ Π½Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π² Π±Π»ΠΈΠΆΠ°ΠΉΡΠΈΠ΅ Π½Π΅Π΄Π΅Π»ΠΈ. ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ Π½Π°ΠΌ ΠΏΡΠΈΠ΄Π΅ΡΡΡ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄ΠΎΠΆΠ΄Π°ΡΡ, ΡΡΠΎΠ±Ρ ΡΠ²ΠΈΠ΄Π΅ΡΡ, ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π»ΠΈ ΡΡΠΎ Π±ΠΎΠ»ΡΡΠ΅. Π― ΠΏΠΎΡΡΠ°ΡΠ°ΡΡΡ Π΄ΠΎΠ»ΠΎΠΆΠΈΡΡ ΠΎ Π½Π°ΡΠΈΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°Ρ .
Π£Π΄Π°ΡΠΈ Π²ΡΠ΅ΠΌ, Π±ΠΎΡΡΡΠΈΠΌΡΡ Ρ ΡΡΠΎΠΉ Π½Π΅ΠΏΡΠΈΡΡΠ½ΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ! ΠΠ°Π΄Π΅ΡΡΡ, ΡΡΠΎ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ.
Π― Π·Π½Π°Ρ, ΠΊΠ°ΠΊ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ ΡΡΡ ΡΠΈΡΡΠ°ΡΠΈΡ. Π©Π΅Π»ΠΊΠ½ΠΈΡΠ΅ Π΅ΡΠ΅ ΡΠ°Π· Π² ΡΠΎΡΠΌΠ΅, ΠΊΠ°ΠΊ Π²Ρ ΡΠΊΠ°Π·Π°Π»ΠΈ, Π° Π·Π°ΡΠ΅ΠΌ ΡΠ΅Π»ΠΊΠ½ΠΈΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Π² ΠΏΠ»ΠΎΡΠΊΠΎΠΌ ΡΠΏΠΈΡΠΊΠ΅, ΡΡΠΎΠ±Ρ Π²ΠΎΠΉΡΠΈ Π² ΡΠΎΡΠΌΡ. ΠΠΎΠ²ΡΠΎΡΠΈΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ Π΄Π΅ΡΡΡΡ ΡΠ°Π·, ΠΈ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π±ΡΡΡΡΠ΅Π΅ ΠΏΠΎΡΠ²ΠΈΡΡΡ ΡΡΠ° ΠΎΡΠΈΠ±ΠΊΠ°. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ ΠΎΡΠΈΠ±ΠΊΡ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ ΡΠ΅ΠΌ, ΡΡΠΎ Ρ ΡΠΊΠ°Π·Π°Π».
@Hopding
Π― Π·Π½Π°Ρ, ΠΊΠ°ΠΊ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ ΡΡΡ ΡΠΈΡΡΠ°ΡΠΈΡ. Π©Π΅Π»ΠΊΠ½ΠΈΡΠ΅ Π΅ΡΠ΅ ΡΠ°Π· Π² ΡΠΎΡΠΌΠ΅, ΠΊΠ°ΠΊ Π²Ρ ΡΠΊΠ°Π·Π°Π»ΠΈ, Π° Π·Π°ΡΠ΅ΠΌ ΡΠ΅Π»ΠΊΠ½ΠΈΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Π² ΠΏΠ»ΠΎΡΠΊΠΎΠΌ ΡΠΏΠΈΡΠΊΠ΅, ΡΡΠΎΠ±Ρ Π²ΠΎΠΉΡΠΈ Π² ΡΠΎΡΠΌΡ. ΠΠΎΠ²ΡΠΎΡΠΈΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ Π΄Π΅ΡΡΡΡ ΡΠ°Π·, ΠΈ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π±ΡΡΡΡΠ΅Π΅ ΠΏΠΎΡΠ²ΠΈΡΡΡ ΡΡΠ° ΠΎΡΠΈΠ±ΠΊΠ°. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ ΠΎΡΠΈΠ±ΠΊΡ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ ΡΠ΅ΠΌ, ΡΡΠΎ Ρ ΡΠΊΠ°Π·Π°Π».
@Hopding
Π― ΡΠ΄Π°Π»ΠΈΠ» underlineColorAndroid, Π½ΠΎ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Ρ.
@ response-native-bot ΡΡΠ° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΠΎΡΠ΅Π½Ρ Π²Π°ΠΆΠ½Π°
Π― ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ RN 59.5, ΠΈ Ρ ΠΌΠ΅Π½Ρ ΡΠΎΠΆΠ΅ Π΅ΡΡΡ ΡΡΠ° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ..
ΠΠΎΠΏΡΡΠΊΠ° Π²ΡΠ·Π²Π°ΡΡ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ android.graphics.drawable.Drawable android.graphics.drawable.Drawable $ ConstantState.newDrawable (android.content.res.Resources) Π΄Π»Ρ ΡΡΡΠ»ΠΊΠΈ Π½Π° Π½ΡΠ»Π΅Π²ΠΎΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ
createAllFutures
DrawableContainer. Java: 875
getOpacity
DrawableContainer. Java: 1158
getOpacity
DrawableContainer. Java: 433
getOpacity
InsetDrawable. Java: 258
computeOpaqueFlags
ΠΠΎΡΠΌΠΎΡΡΠ΅ΡΡ. Java: 16594
setBackgroundDrawable
ΠΠΎΡΠΌΠΎΡΡΠ΅ΡΡ. java: 21577
setBackground
ΠΠΎΡΠΌΠΎΡΡΠ΅ΡΡ. java: 21470
ΠΠΎΡΠΌΠΎΡΡΠ΅ΡΡ. Java: 5498
TextView. Java: 875
Π Π΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ΅ΠΊΡΡ. Java: 88
Π Π΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ΅ΠΊΡΡ. java: 84
Π Π΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ΅ΠΊΡΡ. Java: 80
Π Π΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ΅ΠΊΡΡ. Java: 76
setThemedContext
ReactTextInputShadowNode. Java: 76
createView
UII ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ. Java: 294
createView
UIManagerModule. java: 462
Π²ΡΠ·ΡΠ²Π°ΡΡ
Method.java
Π²ΡΠ·ΡΠ²Π°ΡΡ
JavaMethodWrapper. java: 372
Π²ΡΠ·ΡΠ²Π°ΡΡ
JavaModuleWrapper. Java: 158
Π±Π΅ΠΆΠ°ΡΡ
NativeRunnable.java
handleCallback
ΠΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ. java: 873
dispatchMessage
ΠΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ. Java: 99
dispatchMessage
MessageQueueThreadHandler. java: 29
ΠΏΠ΅ΡΠ»Ρ
Looper. java: 193
Π±Π΅ΠΆΠ°ΡΡ
MessageQueueThreadImpl. Java: 232
Π±Π΅ΠΆΠ°ΡΡ
ΠΠΈΡΡ. Java: 764
ΠΡΠΎ-Π½ΠΈΠ±ΡΠ΄Ρ ΡΠΆΠ΅ ΡΠ΅ΡΠΈΠ» ΡΡΠΎ ?? Π£ ΠΌΠ΅Π½Ρ ΡΡΠ° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π² RN 52, Ρ ΠΎΠ±Π½ΠΎΠ²ΠΈΠ»ΡΡ Π΄ΠΎ 56, Π½ΠΎ Π²ΡΠ΅ Π΅ΡΠ΅ ΠΎΡΠΈΠ±ΠΊΠ°. Π― ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°Π» Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ Π΅Π³ΠΎ, Π½ΠΎ Π½Π΅ ΡΠΌΠΎΠ³. ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΡΡΠΎΠΉΡΡΠ²Π° ΠΏΠΎ-ΠΏΡΠ΅ΠΆΠ½Π΅ΠΌΡ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ ΡΡΠΎ ΡΠ»ΡΡΠ°ΠΉΠ½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ.
Π£Π΄Π°ΡΠΈ Ρ ΡΡΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ?
Ρ ΠΏΠΎΠ»ΡΡΠ°Ρ ΡΡΠΎΡ Π²ΡΠΏΡΡΠΊ RN 0.59.5
ΠΡΠ° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΠ»Π° ΠΊ ΡΠ±ΠΎΡ Π½Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π΅Π½Π½ΠΎΠΉ ΡΡΠ΅Π΄Π΅. ΠΡΠΎ Π½Π΅ΠΏΡΠΈΡΡΠ½ΡΠΉ Π±Π°Π³, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π΅Π³ΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠ»ΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ. ΠΡ Π½Π°ΡΠ»ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠΎΠ±Π΅ΡΠ°ΡΡΠ΅Π΅ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π΄Π»Ρ Π½Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΈ Ρ Ρ ΠΎΡΠ΅Π» Π±Ρ ΠΏΠΎΠ΄Π΅Π»ΠΈΡΡΡΡ ΡΠ²ΠΎΠΈΠΌΠΈ Π²ΡΠ²ΠΎΠ΄Π°ΠΌΠΈ Π·Π΄Π΅ΡΡ, ΡΡΠΎΠ±Ρ, Π½Π°Π΄Π΅ΡΡΡ, ΡΡΠΊΠΎΠ½ΠΎΠΌΠΈΡΡ Π²ΡΠ΅ΠΌΡ ΠΈ ΡΠ°Π·ΠΎΡΠ°ΡΠΎΠ²Π°Π½ΠΈΠ΅ Π΄ΡΡΠ³ΠΈΡ .
Π’Π΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈΠ΅ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠΈ ΠΈ Π²Π΅ΡΡΠΈΠΈ
ΠΡΠ° ΠΎΡΠΈΠ±ΠΊΠ° ΠΏΡΠΈΠ²Π΅Π»Π° ΠΊ ΡΠ±ΠΎΡ Π½Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π° ΡΡΡΡΠΎΠΉΡΡΠ²Π°Ρ Samsung, Google ΠΈ LG Android. Π£ Π½Π°Ρ Π±ΡΠ»ΠΈ ΠΎΡΡΠ΅ΡΡ ΠΎ ΡΠ±ΠΎΡΡ ΠΈΠ· ΡΠ»Π΅Π΄ΡΡΡΠΈΡ Π²Π΅ΡΡΠΈΠΉ Android:
8.0.0
8.1.0
7.1.1
ΠΠ°ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ:
react-native
: 0.53.0react
: 16.2.0Π§ΡΠΎ Π²ΡΠ·ΡΠ²Π°Π΅Ρ ΡΠ±ΠΎΠΉ
ΠΠ°ΠΊ ΠΎΡΠΌΠ΅ΡΠ°Π»ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ Π² ΡΡΠΎΠΌ ΠΏΠΎΡΠΎΠΊΠ΅, ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°, ΠΏΠΎΡ ΠΎΠΆΠ΅, Π²ΡΠ·Π²Π°Π½Π° ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ²
TextInput
,FlatList
ΠΈScrollView
. Π Π½Π°ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ Ρ Π½Π°Ρ Π΅ΡΡΡ ΡΠΊΡΠ°Π½, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ ΠΎΠ΄ΠΈΠ½TextInput
ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅ΠΌΡΠΉ Π½Π°Π΄FlatList
. ΠΡΠΈ Π½Π°ΠΆΠ°ΡΠΈΠΈ Π½Π° ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π²FlatList
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΈΡ Π½Π° Π½ΠΎΠ²ΡΠΉ ΡΠΊΡΠ°Π½, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ ΡΠΎΡΠΌΡ. ΠΠΎΡΠ½Π΅Π²ΠΎΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ ΡΡΠΎΠΉ ΡΠΎΡΠΌΡ - ΡΡΠΎScrollView
ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΡΠ΄ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ²TextInput
(Π²ΠΌΠ΅ΡΡΠ΅ Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΠΌΠΈ ΠΊΠ½ΠΎΠΏΠΊΠ°ΠΌΠΈ ΠΈ Π΄ΡΡΠ³ΠΈΠΌΠΈ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌΡΠΌΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°ΠΌΠΈ). ΠΠ°ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π²ΡΠ»Π΅ΡΠ°Π΅Ρ, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π½Π°ΠΆΠΈΠΌΠ°Π΅Ρ Π½Π° ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΡΡΠΈΡFlatList
ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² (ΠΎΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π½Π΅ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π·).
ΠΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΡΠ»ΠΎΠΆΠ½ΠΎ. Π€Π°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ, ΠΌΡ Π½Π΅ ΡΠΌΠΎΠ³Π»ΠΈ ΡΡΠΎΠ³ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ. ΠΠΎ ΠΌΡ Π·Π½Π°Π΅ΠΌ, ΡΡΠΎ ΡΠ±ΠΎΠΉ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π½Π° ΡΡΠΎΠΌ ΡΡΠ°ΠΏΠ΅ ΡΠ°Π±ΠΎΡΠ΅Π³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ°, ΠΏΡΠΎΡΠΌΠ°ΡΡΠΈΠ²Π°Ρ Π·Π°ΠΏΠΈΡΠΈ ΡΠ΅Π°Π½ΡΠ° Appsee.
ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΌΡ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, Π½Π°ΠΌ ΠΏΡΠΈΡΠ»ΠΎΡΡ ΠΏΠΎΠ»Π°Π³Π°ΡΡΡΡ Π½Π° ΠΆΡΡΠ½Π°Π»Ρ ΡΠ±ΠΎΠ΅Π² ΠΈΠ· Appsee Π΄Π»Ρ Π΅Π΅ ΠΎΡΠ»Π°Π΄ΠΊΠΈ. Π― ΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π» ΡΡΠ°ΡΡΠΈΡΠΎΠ²ΠΊΡ ΡΡΠ΅ΠΊΠ° ΠΈΠ· ΠΎΡΡΠ΅ΡΠΎΠ² ΠΎ ΡΠ±ΠΎΡΡ Π½ΠΈΠΆΠ΅ (ΠΈ ΠΏΡΠΎΠΏΡΡΡΠΈΠ» Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΠΌΠ½ΡΠ΅ ΡΡΠ°ΡΡΠΊΠΈ). ΠΡΠΎ Π±ΠΎΠ»Π΅Π΅ ΠΈΠ»ΠΈ ΠΌΠ΅Π½Π΅Π΅ ΠΈΠ΄Π΅Π½ΡΠΈΡΠ½ΠΎ ΡΡΠ°ΡΡΠΈΡΠΎΠ²ΠΊΠ°ΠΌ ΡΡΠ΅ΠΊΠ°, ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Π½ΡΠΌ Π² ΡΡΠΎΠΉ Π²Π΅ΡΠΊΠ΅ Π΄ΡΡΠ³ΠΈΠΌΠΈ:0 java.lang.NullPointerException: Attempt to invoke virtual method 'android.graphics.drawable.Drawable android.graphics.drawable.Drawable$ConstantState.newDrawable(android.content.res.Resources)' on a null object reference 1 at android.graphics.drawable.DrawableContainer$DrawableContainerState.createAllFutures(DrawableContainer.java:875) 2 at android.graphics.drawable.DrawableContainer$DrawableContainerState.getOpacity(DrawableContainer.java:1158) 3 at android.graphics.drawable.DrawableContainer.getOpacity(DrawableContainer.java:433) 4 at android.graphics.drawable.InsetDrawable.getOpacity(InsetDrawable.java:258) 5 at android.view.View.computeOpaqueFlags(View.java:16900) 6 at android.view.View.setBackgroundDrawable(View.java:21824) 7 at android.view.View.setBackground(View.java:21717) 8 at android.view.View.<init>(View.java:5577) 9 at android.widget.TextView.<init>(TextView.java:1144) ... 13 at android.widget.EditText.<init>(EditText.java:96) 14 at com.facebook.react.views.textinput.ReactEditText.<init>(ReactEditText.java:91) 15 at com.facebook.react.views.textinput.ReactTextInputManager.createViewInstance(ReactTextInputManager.java:91) 16 at com.facebook.react.views.textinput.ReactTextInputManager.createViewInstance(ReactTextInputManager.java:61) ... 35 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1408)
ΠΡΡΠΎΡΠ½ΠΈΠΊ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ
ΠΡΠΎΡΠΈΡΠ°Π² ΡΡΡ Π²Π΅ΡΠΊΡ ΠΈ ΠΏΡΠΎΠ²Π΅Π΄Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°ΡΠΎΠ² ΠΈΠ»ΠΈ ΠΏΡΠΎΠ²Π΅Π΄Ρ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅, Ρ Π½Π°ΡΠ΅Π» ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ
underlineColorAndroid
prop Π² ΡΠ°ΠΉΠ»Π΅ReactTextInputManager.java
:@ReactProp(name = "underlineColorAndroid", customType = "Color") public void setUnderlineColor(ReactEditText view, <strong i="43">@Nullable</strong> Integer underlineColor) { // Drawable.mutate() can sometimes crash due to an AOSP bug: // See https://code.google.com/p/android/issues/detail?id=191754 for more info Drawable background = view.getBackground(); Drawable drawableToMutate = background.getConstantState() != null ? background.mutate() : background; if (underlineColor == null) { drawableToMutate.clearColorFilter(); } else { drawableToMutate.setColorFilter(underlineColor, PorterDuff.Mode.SRC_IN); } }
ΠΡΡΠ΅Ρ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅, ΡΡΡΠ»ΠΊΠ° Π½Π° ΠΊΠΎΡΠΎΡΡΠΉ Π΅ΡΡΡ Π² ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ, ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΡΡ ΡΡΠ°ΡΡΠΈΡΠΎΠ²ΠΊΡ ΡΡΠ΅ΠΊΠ°:
java.lang.NullPointerException: Attempt to invoke virtual method 'android.graphics.drawable.Drawable android.graphics.drawable.Drawable$ConstantState.newDrawable()' on a null object reference at android.graphics.drawable.LayerDrawable$ChildDrawable.<init>(LayerDrawable.java:1723) at android.graphics.drawable.LayerDrawable$LayerState.<init>(LayerDrawable.java:1792) at android.graphics.drawable.LayerDrawable.createConstantState(LayerDrawable.java:152) at android.graphics.drawable.LayerDrawable.mutate(LayerDrawable.java:1652)
ΠΡΠΎ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ ΡΡΠ°ΡΡΠΈΡΠΎΠ²ΠΊΠ΅ ΡΡΠ΅ΠΊΠ°, Ρ ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΌΡ ΡΡΠ°Π»ΠΊΠΈΠ²Π°Π΅ΠΌΡΡ Π² Π½Π°ΡΠ΅ΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ. Π― Π½Π΅ ΠΏΡΠ΅ΡΠ΅Π½Π΄ΡΡ Π½Π° ΠΏΠΎΠ»Π½ΠΎΠ΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, Π½ΠΎ Π²ΠΏΠΎΠ»Π½Π΅ Π²Π΅ΡΠΎΡΡΠ½ΠΎ, ΡΡΠΎ ΠΏΡΠΈΡΠΈΠ½Π° ΡΠ±ΠΎΡ Π½Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π² ΡΠ°Π±ΠΎΡΠ΅ΠΉ ΡΡΠ΅Π΄Π΅ ΡΠ²ΡΠ·Π°Π½Π° Ρ ΡΡΠ°Π±Π°ΡΡΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΎΡΠΈΠ±ΠΊΠΈ
Drawable.mutate()
. ΠΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ ΠΏΡΡΠ°Π΅ΠΌΡΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎunderlineColorAndroid
Π΄Π»Ρ Π½Π°ΡΠ΅Π³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°TextInput
(ΠΈ, ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π²ΡΠ·ΡΠ²Π°Π΅ΠΌ ΠΌΠ΅ΡΠΎΠ΄ReactTextInputManager.setUnderlineColor
).
ΠΠ°ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ΅Π½Π΄Π΅ΡΠΈΠ»ΠΎTextInput
ΡΠΎ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌΠΈ ΡΠ΅ΠΊΠ²ΠΈΠ·ΠΈΡΠ°ΠΌΠΈ, ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ Π±ΡΠ»ΠΎunderlineColorAndroid="transparent"
:<TextInput ref={this.handleRef} value={this.props.value} autoCorrect={false} autoCapitalize="none" underlineColorAndroid="transparent" onSubmitEditing={this.handleSubmit} onChangeText={this.props.onChangeText} onFocus={this.handleFocused} onBlur={this.handleBlur} clearButtonMode="always" />
ΠΠ°ΠΊ ΠΌΡ ΡΡΠΎ ΠΈΡΠΏΡΠ°Π²ΠΈΠ»ΠΈ
ΠΠ°ΠΌ Π½ΡΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΡΡΡ ΠΎΠΏΠΎΡΡ, ΡΡΠΎΠ±Ρ ΡΠ±ΡΠ°ΡΡ ΠΏΠΎΠ΄ΡΠ΅ΡΠΊΠΈΠ²Π°Π½ΠΈΠ΅ Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ²
TextInput
Π² Π½Π°ΡΠ΅ΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ. ΠΠΎ, ΡΡΠ΄Ρ ΠΏΠΎ Π½Π°ΡΠΈΠΌ Π²ΡΠ²ΠΎΠ΄Π°ΠΌ, Π΅Π³ΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΠΏΡΠΎΠΏΡΡΠΊΠ° Π·Π°ΠΏΡΡΠΊΠ°Π» ΠΎΡΠΈΠ±ΠΊΡ Android, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΈΠ½ΠΎΠ³Π΄Π° ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΠ»Π° ΠΊ ΡΠ±ΠΎΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
Π ΡΡΠ°ΡΡΡΡ, Π΅ΡΡΡ Π΅ΡΠ΅ ΠΎΠ΄ΠΈΠ½ ΡΠΏΠΎΡΠΎΠ± ΡΠ±ΡΠ°ΡΡ ΠΏΠΎΠ΄ΡΠ΅ΡΠΊΠΈΠ²Π°Π½ΠΈΠ΅ Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ²TextInput
Π½Π° Android. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΡΡΡΠΎΠΊΡ Π² ΡΠ°ΠΉΠ»android/app/src/main/res/values/styles.xml
:<resources> <!-- Base application theme. --> <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> <item name="android:windowExitAnimation"><strong i="66">@android</strong>:anim/fade_out</item> <item name="android:windowBackground">@drawable/splash_screen</item> + <item name="android:editTextBackground"><strong i="67">@android</strong>:color/transparent</item> </style> </resources>
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ Ρ ΡΠ°ΠΊΠΆΠ΅ Π²ΠΈΠ΄Π΅Π» ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π½ΠΎ ΡΡΠΎ Π½Π΅ ΡΠ½ΡΠ»ΠΎ Π΄Π»Ρ Π½Π°Ρ ΠΏΠΎΠ΄ΡΠ΅ΡΠΊΠΈΠ²Π°Π½ΠΈΡ:
<resources> <!-- Base application theme. --> <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> <item name="android:windowExitAnimation"><strong i="72">@android</strong>:anim/fade_out</item> <item name="android:windowBackground">@drawable/splash_screen</item> </style> + <!-- This did *not* work for us... --> + <style name="AppEditTextStyle" parent="@style/Widget.AppCompat.EditText"> + <item name="android:background"><strong i="73">@android</strong>:color/transparent</item> + </style> </resources>
ΠΡΠΎ Π½Π΅ ΡΠ΅ΡΠ°Π΅Ρ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ. ΠΡΠΎ ΠΏΡΠΎΡΡΠΎ ΠΎΠ±Ρ ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ ΠΎΡΠΊΠ°Π· ΠΎΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ
underlineColorAndroid
prop Π² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°ΡTextInput
.
Π― ΠΏΠΎΠΊΠ° Π½Π΅ ΠΌΠΎΠ³Ρ Ρ ΡΠ²Π΅ΡΠ΅Π½Π½ΠΎΡΡΡΡ ΡΠΊΠ°Π·Π°ΡΡ, ΡΡΠΎ ΡΡΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΌΠ½Π΅ Π½Π΅ ΡΠ΄Π°Π»ΠΎΡΡ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎ. ΠΡ Π²Π½Π΅Π΄ΡΠΈΠΌ ΡΡΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π² ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ Π½Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π² Π±Π»ΠΈΠΆΠ°ΠΉΡΠΈΠ΅ Π½Π΅Π΄Π΅Π»ΠΈ. ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ Π½Π°ΠΌ ΠΏΡΠΈΠ΄Π΅ΡΡΡ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄ΠΎΠΆΠ΄Π°ΡΡ, ΡΡΠΎΠ±Ρ ΡΠ²ΠΈΠ΄Π΅ΡΡ, ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π»ΠΈ ΡΡΠΎ Π±ΠΎΠ»ΡΡΠ΅. Π― ΠΏΠΎΡΡΠ°ΡΠ°ΡΡΡ Π΄ΠΎΠ»ΠΎΠΆΠΈΡΡ ΠΎ Π½Π°ΡΠΈΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°Ρ .
Π£Π΄Π°ΡΠΈ Π²ΡΠ΅ΠΌ, Π±ΠΎΡΡΡΠΈΠΌΡΡ Ρ ΡΡΠΎΠΉ Π½Π΅ΠΏΡΠΈΡΡΠ½ΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ! ΠΠ°Π΄Π΅ΡΡΡ, ΡΡΠΎ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ.Π― Π·Π½Π°Ρ, ΠΊΠ°ΠΊ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ ΡΡΡ ΡΠΈΡΡΠ°ΡΠΈΡ. Π©Π΅Π»ΠΊΠ½ΠΈΡΠ΅ Π΅ΡΠ΅ ΡΠ°Π· Π² ΡΠΎΡΠΌΠ΅, ΠΊΠ°ΠΊ Π²Ρ ΡΠΊΠ°Π·Π°Π»ΠΈ, Π° Π·Π°ΡΠ΅ΠΌ ΡΠ΅Π»ΠΊΠ½ΠΈΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Π² ΠΏΠ»ΠΎΡΠΊΠΎΠΌ ΡΠΏΠΈΡΠΊΠ΅, ΡΡΠΎΠ±Ρ Π²ΠΎΠΉΡΠΈ Π² ΡΠΎΡΠΌΡ. ΠΠΎΠ²ΡΠΎΡΠΈΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ Π΄Π΅ΡΡΡΡ ΡΠ°Π·, ΠΈ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π±ΡΡΡΡΠ΅Π΅ ΠΏΠΎΡΠ²ΠΈΡΡΡ ΡΡΠ° ΠΎΡΠΈΠ±ΠΊΠ°. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ ΠΎΡΠΈΠ±ΠΊΡ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ ΡΠ΅ΠΌ, ΡΡΠΎ Ρ ΡΠΊΠ°Π·Π°Π».
ΠΠΎΡ ΠΎΠΆΠ΅, ΡΡΠΎ ΠΈΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ.
ΠΠ»Ρ ΡΠ΅Ρ
, ΠΊΡΠΎ Π·Π°Π΄Π°Π΅ΡΡΡ Π²ΠΎΠΏΡΠΎΡΠΎΠΌ, ΠΊΠ°ΠΊ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ: ΠΌΡ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅Π»ΠΈ ΡΡΠΎ, Π΄ΠΎΠ±Π°Π²ΠΈΠ² 100 <TextInput ...>
s ΠΊ <ScrollView ...>
. Π ΡΡΠΎΡ ΠΌΠΎΠΌΠ΅Π½Ρ ΠΌΡ ΡΠΌΠΎΠ³Π»ΠΈ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ ΠΎΡΠΈΠ±ΠΊΡ Ρ Π²Π΅ΡΠΎΡΡΠ½ΠΎΡΡΡΡ ΡΡΠΏΠ΅Ρ
Π° 75-90%. ΠΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ ΡΠ΅ΡΠ΅Π½ΠΈΡ. 50 ΠΏΠΎΠ»Π΅ΠΉ Π±ΡΠ»ΠΎ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ.
ΠΠ±Ρ ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡΡΡ @Hopding ΡΡΠ°Π±ΠΎΡΠ°Π» Π΄Π»Ρ Π½Π°Ρ. ΠΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½Π½ΡΠΉ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π½ΡΠΉ Β«ΠΎΡΡΠ΅Π½ΠΎΡΠ½ΡΠΉΒ» ΡΠ°ΡΡΠ²ΠΎΡ (Π΄ΡΡΠ³ΠΈΠΌΠΈ) Π½Π΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ. Π Π½Π΅ΡΡΠ°ΡΡΡΡ, ΠΏΠΎΠ±ΠΎΡΠ½ΡΠΉ ΡΡΡΠ΅ΠΊΡ ΠΎΠ±Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΡΡΠΈ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΈΠ· ΡΠ΅ΠΊΡΡΠΎΠ²ΡΡ ΠΏΠΎΠ»Π΅ΠΉ ΡΠ΄Π°Π»ΡΠ΅ΡΡΡ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅.
Π’ΠΎΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅.
ΠΠ΅ΡΡΡΡΠ°Π½ΠΈΠΌΠΎΠ΅ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅: java.lang.NullPointerException: ΠΏΠΎΠΏΡΡΠΊΠ° Π²ΡΠ·Π²Π°ΡΡ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ android.graphics.drawable.Drawable android.graphics.drawable.Drawable $ ConstantState.newDrawable (android.content.res.Resources) Π΄Π»Ρ ΡΡΡΠ»ΠΊΠΈ Π½Π° Π½ΡΠ»Π΅Π²ΠΎΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ
Π² android.graphics.drawable.DrawableContainer $ DrawableContainerState.createAllFutures (DrawableContainer.java:875)
Π² android.graphics.drawable.DrawableContainer $ DrawableContainerState.getOpacity (DrawableContainer.java:1158)
Π² android.graphics.drawable.DrawableContainer.getOpacity (DrawableContainer.java:433)
Π² android.graphics.drawable.InsetDrawable.getOpacity (InsetDrawable.java:258)
Π² android.view.View.computeOpaqueFlags (View.java:18188)
Π² android.view.View.setBackgroundDrawable (View.java:23358)
Π² android.view.View.setBackground (View.java:23251)
Π² android.view.View.(View.java:5948)
Π² android.widget.TextView.(TextView.java:1118)
Π² android.widget.EditText.(EditText.java:106)
Π² android.widget.EditText.(EditText.java:102)
Π² android.widget.EditText.(EditText.java:98)
Π² android.widget.EditText.(EditText.java:94)
Π² com.facebook.react.views.textinput.ReactEditText.(ReactEditText.java:89)
Π² com.facebook.react.views.textinput.ReactTextInputManager.createViewInstance (ReactTextInputManager.java:105)
Π² com.facebook.react.views.textinput.ReactTextInputManager.createViewInstance (ReactTextInputManager.java:65)
Π² com.facebook.react.uimanager.ViewManager.createView (ViewManager.java:47)
Π² com.facebook.react.uimanager.NativeViewHierarchyManager.createView (NativeViewHierarchyManager.java:256)
Π² com.facebook.react.uimanager.UIViewOperationQueue $ CreateViewOperation.execute (UIViewOperationQueue.java:200)
Π² com.facebook.react.uimanager.UIViewOperationQueue $ DispatchUIFrameCallback.dispatchPendingNonBatchedOperations (UIViewOperationQueue.java:1109)
Π² com.facebook.react.uimanager.UIViewOperationQueue $ DispatchUIFrameCallback.doFrameGuarded (UIViewOperationQueue.java:1080)
Π² com.facebook.react.uimanager.GuardedFrameCallback.doFrame (GuardedFrameCallback.java:29)
Π² com.facebook.react.modules.core.ReactChoreographer $ ReactChoreographerDispatcher.doFrame (ReactChoreographer.java:166)
Π² com.facebook.react.modules.core.ChoreographerCompat $ FrameCallback $ 1.doFrame (ChoreographerCompat.java:84)
Π½Π° android.view.Choreographer $ CallbackRecord.run (Choreographer.java:947)
Π½Π° android.view.Choreographer.doCallbacks (Choreographer.java:761)
Π½Π° android.view.Choreographer.doFrame (Choreographer.java:693)
Π² android.view.Choreographer $ FrameDisplayEventReceiver.run (Choreographer.java:935)
Π² android.os.Handler.handleCallback (Handler.java:873)
Π² android.os.Handler.dispatchMessage (Handler.java:99)
Π² android.os.Looper.loop (Looper.java:214)
Π² android.app.ActivityThread.main (ActivityThread.java:7045)
Π² java.lang.reflect.Method.invoke (Method.java)
Π² com.android.internal.os.RuntimeInit $ MethodAndArgsCaller.run (RuntimeInit.java:493)
Π² com.android.internal.os.ZygoteInit.main (ZygoteInit.java:965)
ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡΠ΄Ρ ΠΎΠ±Ρ ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡΡΡ?
ΠΠΎΡ ΠΊΠΎΠ΄, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ ΠΎΡΠΈΠ±ΠΊΠ° RN 0.59.8
> import React, { Component } from 'react';
> import { StyleSheet, Text, View, TextInput, FlatList, TouchableOpacity } from 'react-native';
>
> export default class App extends Component {
> state = { Valor: [] }
> componentDidMount() {
> for (i = 0; i < 90000; i++) {
> var te = { ID: i }
> this.state.Valor.push(te)
> }
> }
>
> keyExtractor = (item, index) => item.ID.toString();
> renderList = () => {
> return (
> <FlatList
> keyExtractor={this.keyExtractor}
> data={this.state.Valor}
> renderItem={({ item }) => (
> <TouchableOpacity
> activeOpacity={0.5}
> onPress={() => alert("hola")} >
> <View style={{ flex: 1 }}>
> <Text>Muestra</Text>
> <TextInput
> underlineColorAndroid={"transparent"}
> placeholder={"Ingrese"}
> keyboardType="phone-pad"
> />
> </View>
> </TouchableOpacity>
> )}
> >
> </FlatList>
> );
> };
>
> render() {
> return (
> <View style={styles.container}>
> {this.renderList()}
> </View>
> );
> }
> }
>
> const styles = StyleSheet.create({
> container: {
> flex: 1,
> justifyContent: 'flex-start',
> alignItems: 'flex-start',
> backgroundColor: '#F5FCFF',
> },
> welcome: {
> fontSize: 20,
> textAlign: 'center',
> margin: 10,
> },
> instructions: {
> textAlign: 'center',
> color: '#333333',
> marginBottom: 5,
> }
> });
>
ΠΠΈΠ΄Π΅ΠΎ: https://www.youtube.com/watch?v=FJ6YvXrevMQ&feature=youtu.be
Π Π΅ΡΠ΅Π½ΠΈΠ΅ ΠΏΠ»Π·.
ΠΡΠΎΡ Π²ΠΎΠΏΡΠΎΡ Π±ΡΠ» ΠΎΡΠΊΡΡΡ 11 ΡΠ½Π²Π°ΡΡ 2018 Π³., Π° ΡΠ΅ΠΉΡΠ°Ρ ΠΌΠ°ΠΉ 2019 Π³., ΠΏΠΎΡΠ΅ΠΌΡ Π½ΠΈΠΊΡΠΎ ΠΈΠ· ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π½Π΅ Π·Π°Π½ΠΈΠΌΠ°Π΅ΡΡΡ ΠΈΠΌ?
Π Π²Π°ΡΠ΅ΠΌΡ ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ, ΠΎΠ±Ρ
ΠΎΠ΄Π½ΡΠ΅ ΠΏΡΡΠΈ Π½Π΅ ΡΠ°Π±ΠΎΡΠ°ΡΡ.
Π’ΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅ Π·Π΄Π΅ΡΡ 0.59.6
ΠΠ΅ΡΡΡΡΠ°Π½ΠΈΠΌΠΎΠ΅ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅: java.lang.NullPointerException: ΠΏΠΎΠΏΡΡΠΊΠ° Π²ΡΠ·Π²Π°ΡΡ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ android.graphics.drawable.Drawable android.graphics.drawable.Drawable $ ConstantState.newDrawable (android.content.res.Resources) Π΄Π»Ρ ΡΡΡΠ»ΠΊΠΈ Π½Π° Π½ΡΠ»Π΅Π²ΠΎΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ
Π² android.graphics.drawable.DrawableContainer $ DrawableContainerState.createAllFutures (DrawableContainer.java:875)
Π² android.graphics.drawable.DrawableContainer $ DrawableContainerState.getOpacity (DrawableContainer.java:1158)
Π² android.graphics.drawable.DrawableContainer.getOpacity (DrawableContainer.java:433)
Π² android.graphics.drawable.InsetDrawable.getOpacity (InsetDrawable.java:258)
Π² android.view.View.computeOpaqueFlags (View.java:18188)
Π² android.view.View.setBackgroundDrawable (View.java:23358)
Π² android.view.View.setBackground (View.java:23251)
Π² android.view.View. (View.java:5948)
Π² android.widget.TextView. (TextView.java:1118)
Π² android.widget.EditText. (EditText.java:106)
Π² android.widget.EditText. (EditText.java:102)
Π² android.widget.EditText. (EditText.java:98)
Π² android.widget.EditText. (EditText.java:94)
Π² com.facebook.react.views.textinput.ReactEditText. (ReactEditText.java:89)
Π² com.facebook.react.views.textinput.ReactTextInputManager.createViewInstance (ReactTextInputManager.java:105)
Π² com.facebook.react.views.textinput.ReactTextInputManager.createViewInstance (ReactTextInputManager.java:65)
Π² com.facebook.react.uimanager.ViewManager.createView (ViewManager.java:47)
Π² com.facebook.react.uimanager.NativeViewHierarchyManager.createView (NativeViewHierarchyManager.java:256)
Π² com.facebook.react.uimanager.UIViewOperationQueue $ CreateViewOperation.execute (UIViewOperationQueue.java:200)
Π² com.facebook.react.uimanager.UIViewOperationQueue $ DispatchUIFrameCallback.dispatchPendingNonBatchedOperations (UIViewOperationQueue.java:1109)
Π² com.facebook.react.uimanager.UIViewOperationQueue $ DispatchUIFrameCallback.doFrameGuarded (UIViewOperationQueue.java:1080)
Π² com.facebook.react.uimanager.GuardedFrameCallback.doFrame (GuardedFrameCallback.java:29)
Π² com.facebook.react.modules.core.ReactChoreographer $ ReactChoreographerDispatcher.doFrame (ReactChoreographer.java:166)
Π² com.facebook.react.modules.core.ChoreographerCompat $ FrameCallback $ 1.doFrame (ChoreographerCompat.java:84)
Π½Π° android.view.Choreographer $ CallbackRecord.run (Choreographer.java:947)
Π½Π° android.view.Choreographer.doCallbacks (Choreographer.java:761)
Π½Π° android.view.Choreographer.doFrame (Choreographer.java:693)
Π² android.view.Choreographer $ FrameDisplayEventReceiver.run (Choreographer.java:935)
Π² android.os.Handler.handleCallback (Handler.java:873)
Π² android.os.Handler.dispatchMessage (Handler.java:99)
Π² android.os.Looper.loop (Looper.java:214)
Π² android.app.ActivityThread.main (ActivityThread.java:7045)
Π² java.lang.reflect.Method.invoke (Method.java)
Π² com.android.internal.os.RuntimeInit $ MethodAndArgsCaller.run (RuntimeInit.java:493)
Π² com.android.internal.os.ZygoteInit.main (ZygoteInit.java:965)
@knspatel ΠΠ°ΡΠ΅ ΠΎΠ±Ρ ΠΎΠ΄Π½ΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π·Π°ΠΊΠ»ΡΡΠ°Π»ΠΎΡΡ Π² Π½Π°Π»ΠΎΠΆΠ΅Π½ΠΈΠΈ Π½Π° ΡΠΊΡΠ°Π½ ΠΌΠΎΠ΄Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π°, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΏΠΎΠ»Π΅ Π²Π²ΠΎΠ΄Π° ΡΠ΅ΠΊΡΡΠ° ΡΠ°Π·ΠΌΠ΅ΡΠ°Π»ΠΎΡΡ Π½Π°Π΄ ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»ΠΎΠΌ Π²ΠΌΠ΅ΡΡΠ΅ Ρ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΉ Π½Π΅ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΠΎΡΡΡΡ ΡΠΎΠ½Π°, ΡΡΠΎΠ±Ρ ΡΡΡΡΠ°Π½ΠΈΡΡ ΡΡΡΠ΅ΠΊΡ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄Π°. ΠΡΠ»ΠΈ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠ° Y Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π²Π½Π΅ ΠΏΠΎΠ»Ρ Π·ΡΠ΅Π½ΠΈΡ ΠΈΠ»ΠΈ Π½Π΅Π΄ΠΎΡΡΡΠΏΠ½Π°, ΠΏΠΎΠ»Π΅ Π²Π²ΠΎΠ΄Π° ΡΠ΅ΠΊΡΡΠ° Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ ΠΏΡΡΠΌΠΎ Π½Π°Π΄ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΠΎΠΉ.
ΠΠΎΠ·Π²ΠΎΠ»ΡΡΠ΅ ΠΌΠ½Π΅ ΡΠ΅Π·ΡΠΌΠΈΡΠΎΠ²Π°ΡΡ:
ΠΠ»ΡΡΠ΅Π²ΠΎΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ - Π½ΠΈΠ³Π΄Π΅ Π½Π΅ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π΄Π»Ρ underlineColorAndroid . ΠΠΎ ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ 0.57 underlineColorAndroid , Π²Π°ΠΌ ΠΏΡΠΈΠ΄Π΅ΡΡΡ Π²ΡΡΡΠ½ΡΡ ΡΠ΄Π°Π»ΠΈΡΡ ΡΡΡ ΡΡΡΠΎΠΊΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Π½ΠΈΠ±ΡΠ΄Ρ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ° ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ, ΡΠ°ΠΊΠΎΠ³ΠΎ ΠΊΠ°ΠΊ patch-package .
Π Π΅ΡΠ»ΠΈ Π²Ρ Π²ΡΠ΅ ΠΆΠ΅ Ρ
ΠΎΡΠΈΡΠ΅ ΡΠ΄Π΅Π»Π°ΡΡ ΠΏΠΎΠ΄ΡΠ΅ΡΠΊΠΈΠ²Π°Π½ΠΈΠ΅ Π½Π΅Π²ΠΈΠ΄ΠΈΠΌΡΠΌ, Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π΅Π³ΠΎ Π² ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡΠ΄Ρ xml-ΠΊΠΎΠ½ΡΠΈΠ³ .
Π Π²ΠΎΡ Π½Π΅ΠΊΠΎΡΠΎΡΠ°Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ, ΠΊΠΎΡΠΎΡΡΡ Ρ Π½Π°ΡΠ΅Π» Π½Π° Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ:
Π ΠΊΠΈΡΠ°ΠΉΡΠΊΠΎΠΌ Π±Π»ΠΎΠ³Π΅ (ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ Π³ΡΠ³Π»-ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ΡΠΈΠΊ, Π΅ΡΠ»ΠΈ Π²Ρ Π½Π΅ ΡΠΌΠ΅Π΅ΡΠ΅ ΡΠΈΡΠ°ΡΡ) ΡΠΏΠΎΠΌΠΈΠ½Π°Π΅ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°, ΠΎΡΠ΅Π½Ρ ΠΏΠΎΡ
ΠΎΠΆΠ°Ρ Π½Π° ΡΡΡ. Π Π½Π΅ΠΌ Π³ΠΎΠ²ΠΎΡΠΈΡΡΡ, ΡΡΠΎ ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌΡΠΉ ΠΊΠ»Π°ΡΡ Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΡ ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π±Π΅Π· ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ getConstantState
ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠ·Π²Π°ΡΡ ΡΠ±ΠΎΠΉ Π² ΠΊΠ°ΠΊΠΎΠΌ-ΡΠΎ ΡΡΠ΅Π½Π°ΡΠΈΠΈ.
Π― ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ», ΡΡΠΎ ΠΈΠ½ΠΎΠ³Π΄Π° ΡΠ΅ΠΊΡΡΠΎΠ²ΡΠΉ Π²Π²ΠΎΠ΄ (ReactEditText) Π±ΡΠ΄Π΅Ρ Π²ΠΎΡΡΠΎΠ·Π΄Π°Π½ (Π±ΠΎΠ»ΡΡΠ΅ ΡΠ΅ΠΊΡΡΠΎΠ²ΡΡ
Π²Π²ΠΎΠ΄ΠΎΠ², Π±ΠΎΠ»ΡΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ, Π²ΠΈΠ΄ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ?), Π ΠΎΠ½ ΡΠ½ΠΎΠ²Π° Π±ΡΠ΄Π΅Ρ setBackground
, ΠΊΠΎΡΠΎΡΡΠΉ Π·Π°ΡΠ΅ΠΌ ΠΏΠ΅ΡΠ΅ΠΉΠ΄Π΅Ρ ΠΊ https://github.com/aosp-mirror/ platform_frameworks_base / blob / master / graphics / java / android / graphics / drawable / DrawableContainer.java # L922 , Π³Π΄Π΅ ConstantState
ΠΈΠΌΠ΅Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ null.
ΠΠ΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΉ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌΡΠΉ ΠΊΠ»Π°ΡΡ Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΡ ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠΉ Ρ Π½Π°ΡΠ΅Π», - ΡΡΠΎ getConstantState
ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π±ΡΠ΄Π΅Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ null.
Π― ΠΏΠΎΠΏΡΡΠ°Π»ΡΡ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ Π΅Π³ΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠ°ΠΊΠΎΠ³ΠΎ-ΡΠΎ ΠΏΡΡΡΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°, ΠΈ ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΈΠΌΠ΅ΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ (ΡΡΠΎΡ ΡΠ±ΠΎΠΉ ΡΡ
ΠΎΠ΄ΠΈΡ, Π° Π΄ΡΡΠ³ΠΈΠ΅ ΠΏΠΎΡΠ²Π»ΡΡΡΡΡ).
ΠΠ°Π΄Π΅ΡΡΡ, ΡΡΠΎ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ ΠΊΠΎΠΌΡ-ΡΠΎ ΠΊΠΎΠΏΠ°ΡΡ Π±ΠΎΠ»ΡΡΠ΅.
Π― ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ», ΡΡΠΎ ΡΡΡΠ½ΠΎΠ΅ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ - ΡΡΠΎ ΠΎΡΠ΅Π½Ρ Π½Π΅ΠΏΡΠΎΡΡΠ°Ρ Π·Π°Π΄Π°ΡΠ°, ΠΏΠΎΡΡΠΎΠΌΡ Ρ Π½Π°ΠΏΠΈΡΠ°Π» ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Π΄Π»Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΡΠ΅Π½Π°ΡΠΈΠ΅Π², ΠΎ ΠΊΠΎΡΠΎΡΡΡ Π»ΡΠ΄ΠΈ ΡΠΎΠΎΠ±ΡΠ°Π»ΠΈ Π²ΡΡΠ΅. ΠΡ Π½Π°ΠΉΠ΄Π΅ΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Π½ΠΈΠΆΠ΅. ΠΠ°ΠΌ ΠΏΡΠΎΡΡΠΎ Π½ΡΠΆΠ½ΠΎ Π³Π΄Π΅-ΡΠΎ Π΅Π³ΠΎ ΠΎΡΡΠ΅Π½Π΄Π΅ΡΠΈΡΡ, ΡΡΠΎΠ±Ρ ΠΎΠ½ Π²ΡΠΏΠΎΠ»Π½ΡΠ» ΡΠ²ΠΎΡ ΡΠ°Π±ΠΎΡΡ.
ΠΡΠΈ ΡΡΠΎΠΌ Ρ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ», ΡΡΠΎ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΠΎΠ»ΡΠΊΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅ Π² AppTheme Π² styles.xml, ΠΊΠ°ΠΊ ΡΡΠΎ Π±ΡΠ»ΠΎ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΎ @Hopding
<item name="android:editTextBackground"><strong i="7">@android</strong>:color/transparent</item>
ΠΠΎΠ»ΡΡΠ΅ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ ΡΡΠ΅Π±ΠΎΠ²Π°Π»ΠΎΡΡ, ΠΈ _Π½Π΅ Π±ΡΠ»ΠΎ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ_ ΠΈΠ·Π±Π΅Π³Π°ΡΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ underlineColorAndroid
, ΠΏΠΎΡΡΠΎΠΌΡ Π½Π΅ ΠΈΠΌΠ΅Π»ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, ΡΡΠΎ React Native ΡΠ΅ΠΏΠ΅ΡΡ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ Π΅Π³ΠΎ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ.
ΠΡΠ½ΠΎΠ²Π½ΡΠΌ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΊΠΎΠΌ ΡΡΠΎΠ³ΠΎ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΎ, ΡΡΠΎ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΡΡΠΈΠ»Ρ Π²Π°ΡΠΈΡ
TextInputs, ΡΡΠΎΠ±Ρ ΡΡΠ΅ΡΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠΈΡΡΡΡΡΡ ΠΏΠΎΡΠ΅ΡΡ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ, Π° ΡΠ°ΠΊΠΆΠ΅ Π²Ρ ΠΏΠΎΡΠ΅ΡΡΠ΅ΡΠ΅ ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ΄ΡΠ΅ΡΠΊΠΈΠ²Π°Π½ΠΈΡ, ΡΡΠΎ Π΄Π»Ρ Π½Π°Ρ Π±ΡΠ»ΠΎ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²ΠΎΠΌ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΌΡ Π²ΡΠ΅Π³Π΄Π° ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π»ΠΈ Π΅Π³ΠΎ Β«ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΡΠΌΒ» ΡΡΠΎΠ±Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΎΠ²Π°ΡΡ iOS. ΠΡΠ»ΠΈ Π²Π°ΠΌ ΡΡΠΎ Π½ΡΠΆΠ½ΠΎ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΎΠ·Π΄Π°ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ-ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π΅Ρ onFocus
ΠΈ onBlur
ΠΈ Π΄Π΅Π»Π°Π΅Ρ Π²Π°ΡΠ΅ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ ΠΏΠΎΠ΄ΡΠ΅ΡΠΊΠΈΠ²Π°Π½ΠΈΠ΅.
ΠΠΎΡ Π²Π΅ΡΡΠΈΡ React Native - 0.57.3.
ΠΠΎΡ Π΅ΡΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π²Π΅ΡΠ΅ΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ Ρ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ» Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ²ΠΎΠ΅Π³ΠΎ ΡΠ΅ΡΡΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°:
undefined
Π²ΡΠ·Π²Π°Π» ΡΠ±ΠΎΠΉ, Π½ΠΎ Π²Ρ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΎΠΆΠΈΠ΄Π°Π»ΠΈ, ΡΡΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ RN ΡΠ΅ΠΏΠ΅ΡΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ Π΅Π³ΠΎ Π½Π° Β«ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΡΠΉΒ»displayForMs: 0
ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Ρ, ΡΡΠΎ ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° TextInputs Π±ΡΠ»ΠΈ ΡΠΎΠ·Π΄Π°Π½Ρ ΡΠΎΠ»ΡΠΊΠΎ Π½Π΅Π΄Π°Π²Π½ΠΎ.ΠΡΠ»ΠΈ Π²Ρ Π½Π΅ Ρ
ΠΎΡΠΈΡΠ΅ Π·Π°Π²ΠΈΡΠ°ΡΡ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π·Π°ΠΏΠΈΡΠ°ΡΡ Π²ΡΠ²ΠΎΠ΄ adb logcat
ΠΈ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ, ΡΠΎΠ·Π΄Π°Π½Π½ΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠΌ, ΠΈ ΠΎΡΡΠ΅Ρ ΠΎ ΡΠ±ΠΎΠ΅.
ΠΠΎΡ ΠΌΠΎΠΉ ΡΠ΅ΡΡΠΎΠ²ΡΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ, Π΅ΡΠ»ΠΈ Π²Ρ Π·Π°Ρ ΠΎΡΠΈΡΠ΅ Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ. ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΡΠ΅ΡΡΠ° Π½Π°ΡΡΡΠΎΠ΅Π½Ρ ΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ Π²ΡΠ·ΡΠ²Π°ΡΡ ΡΠ±ΠΎΠΉ, ΠΊΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ, ΠΌΠ΅Π½Π΅Π΅ ΡΠ΅ΠΌ Π·Π° 30 ΡΠ΅ΠΊΡΠ½Π΄.
/**
* A test component to reproduce the crash reported at
* https://github.com/facebook/react-native/issues/17530
*/
import * as React from "react";
import { View, ScrollView, TextInput, Text, StyleSheet } from "react-native";
// These are the test parameters
const params = {
underlineColors: ["red", undefined, "transparent", "rgba(0, 0, 0, 0)"], // The colors to test
numberOfInputs: 100, // How many TextInput to render at a time
focusIntervalMs: 200, // How often to change focus between them
displayForMs: 3000, // How long to display them (set to 0 for indefinite)
delayDisplayForMs: 10, // How long to delay between displays
withScrollView: false // Whether to use a ScrollView
};
const testText = index =>
`Testing underlineColor = ${params.underlineColors[index] || "undefined"}`;
class AndroidTextInputTest extends React.Component{
state = {
underlineColorIndex: 0,
showInputs: true,
startKey: 0
};
mounted = false;
focusInterval = undefined;
textInputRefs = undefined;
focussedInputIndex = 0;
componentDidMount() {
console.log(`Testing with params = `, JSON.stringify(params));
this.mounted = true;
setTimeout(this._showInputs, params.delayDisplayForMs);
setInterval(this._focusAnInput, params.focusIntervalMs);
}
componentWillUnmount() {
clearInterval(this.focusInterval);
this.mounted = false;
}
_focusAnInput = () => {
if (this.mounted && this.textInputRefs) {
if (this.focussedInputIndex >= this.textInputRefs.length) {
this.focussedInputIndex = 0;
}
const textInputRef = this.textInputRefs[this.focussedInputIndex];
const textInput = this.refs[textInputRef];
if (textInput) {
this.focussedInputIndex++;
this.refs[textInputRef].focus();
}
}
};
_showInputs = () => {
if (this.mounted) {
console.log(testText(this.state.underlineColorIndex));
this.setState({ showInputs: true });
if (params.displayForMs) {
setTimeout(this._unshowInputs, params.displayForMs);
}
}
};
_unshowInputs = () => {
this.focussedInputIndex = 0;
this.textInputRefs = undefined;
if (this.mounted) {
let next = this.state.underlineColorIndex + 1;
if (next === params.underlineColors.length) {
next = 0;
}
this.setState({
underlineColorIndex: next,
showInputs: false,
startKey: this.state.startKey + params.numberOfInputs
});
setTimeout(this._showInputs, params.delayDisplayForMs);
}
};
render() {
const textInputs = [];
const { underlineColorIndex } = this.state;
const underlineColor = params.underlineColors[underlineColorIndex];
const refs = [];
if (this.state.showInputs) {
for (let i = 0; i < params.numberOfInputs; i++) {
const key = this.state.startKey + i + "";
refs.push(key);
textInputs.push(
<TextInput
ref={key}
key={key}
placeholder={key}
underlineColorAndroid={underlineColor}
style={styles.textInput}
/>
);
}
if (!this.textInputRefs) {
this.textInputRefs = refs;
}
}
return (
<View style={styles.mainView}>
<Text>{testText(underlineColorIndex)}</Text>
{params.withScrollView ? (
<React.Fragment>
<Text>With ScrollView</Text>
<ScrollView>{textInputs}</ScrollView>
</React.Fragment>
) : (
<React.Fragment>{textInputs}</React.Fragment>
)}
</View>
);
}
}
const styles = StyleSheet.create({
mainView: {
flex: 1,
alignItems: "center"
},
textInput: {
backgroundColor: "white",
margin: 5,
width: 300
}
});
export default AndroidTextInputTest;
ΠΠ»Ρ Π²ΡΠ΅Ρ
, ΠΊΡΠΎ ΠΈΡΠ΅Ρ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅, Ρ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠ³Ρ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠ΄ΠΈΡΡ, ΡΡΠΎ Π½Π°ΡΡΡΠΎΠΉΠΊΠ°
Π Π²Π°ΡΠ΅ΠΌΡ ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ: ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ React-Native Paper ΠΈ ΠΈΡ
ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ TextInput, ΠΈ ΠΌΡ ΡΠΌΠΎΠ³Π»ΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ <item name="android:editTextBackground"><strong i="5">@android</strong>:color/transparent</item>
Π±Π΅Π· ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Π»ΠΈΠ±ΠΎ Π²Π»ΠΈΡΠ½ΠΈΡ Π½Π° RN-Paper TextInput ΠΈ Ρ ΡΠ΅Ρ
ΠΏΠΎΡ Π±ΠΎΠ»ΡΡΠ΅ Π½Π΅ ΠΈΡΠΏΡΡΡΠ²Π°Π»ΠΈ ΡΠ±ΠΎΠ΅Π².
Π‘ΠΌΠΎΡΡΠΈΠΌ Π² ΠΏΡΠΎΠ΄Π°ΠΊΡΠ΅Π½Π΅ Π½Π° 0.59.9
.
Samsung Galaxy S7 Edge
Android 8.0
Fatal Exception: java.lang.NullPointerException: Attempt to invoke virtual method 'android.graphics.drawable.Drawable android.graphics.drawable.Drawable$ConstantState.newDrawable(android.content.res.Resources)' on a null object reference
at android.graphics.drawable.DrawableContainer$DrawableContainerState.createAllFutures + 875(DrawableContainer.java:875)
at android.graphics.drawable.DrawableContainer$DrawableContainerState.getOpacity + 1158(DrawableContainer.java:1158)
at android.graphics.drawable.DrawableContainer.getOpacity + 433(DrawableContainer.java:433)
at android.graphics.drawable.InsetDrawable.getOpacity + 258(InsetDrawable.java:258)
at android.view.View.computeOpaqueFlags + 16809(View.java:16809)
at android.view.View.setBackgroundDrawable + 21728(View.java:21728)
at android.view.View.setBackground + 21621(View.java:21621)
at android.view.View.<init> + 5553(View.java:5553)
at android.widget.TextView.<init> + 1135(TextView.java:1135)
at android.widget.EditText.<init> + 107(EditText.java:107)
at android.widget.EditText.<init> + 103(EditText.java:103)
at android.widget.EditText.<init> + 99(EditText.java:99)
at android.widget.EditText.<init> + 95(EditText.java:95)
at com.facebook.react.views.textinput.ReactTextInputShadowNode.setThemedContext + 76(ReactTextInputShadowNode.java:76)
at com.facebook.react.uimanager.UIImplementation.createView + 294(UIImplementation.java:294)
at com.facebook.react.uimanager.UIManagerModule.createView + 462(UIManagerModule.java:462)
at java.lang.reflect.Method.invoke(Method.java)
at com.facebook.react.bridge.JavaMethodWrapper.invoke + 372(JavaMethodWrapper.java:372)
at com.facebook.react.bridge.JavaModuleWrapper.invoke + 158(JavaModuleWrapper.java:158)
at com.facebook.react.bridge.queue.NativeRunnable.run(NativeRunnable.java)
at android.os.Handler.handleCallback + 789(Handler.java:789)
at android.os.Handler.dispatchMessage + 98(Handler.java:98)
at com.facebook.react.bridge.queue.MessageQueueThreadHandler.dispatchMessage + 29(MessageQueueThreadHandler.java:29)
at android.os.Looper.loop + 164(Looper.java:164)
at com.facebook.react.bridge.queue.MessageQueueThreadImpl$4.run + 232(MessageQueueThreadImpl.java:232)
at java.lang.Thread.run + 764(Thread.java:764)
ΠΠ·ΠΌΠ΅Π½ΡΡ ΡΡΠΎ:
state = {
data: []
}
ΠΊ ΡΡΠΎΠΌΡ:
constructor(props) {
super(props);
this.state = {
data: []
};
}
ΠΈΡΠΏΡΠ°Π²ΠΈΠ» ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π΄Π»Ρ ΠΌΠ΅Π½Ρ. ΠΠ΅ Π·Π½Π°Π΅ΡΠ΅, ΠΏΠΎΡΠ΅ΠΌΡ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΡΠΎΡΡΠΎΡΠ½ΠΈΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΊΠ»Π°ΡΡΠ° Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ Π² ΠΏΠΎΡΡΠ΄ΠΊΠ΅? ΠΡΠΎ ΡΠ³ΠΎΠ΄Π½ΠΎ?
@wbodron ΠΠ΅Ρ, ΡΡΠΎ Π½Π΅ ΡΠ²ΡΠ·Π°Π½ΠΎ. ΠΠ²Π°ΡΠΈΡ ΡΠ»ΡΡΠ°ΠΉΠ½Π°, ΠΏΠΎΡΡΠΎΠΌΡ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠ΄ΡΠΌΠ°ΡΡ, ΡΡΠΎ ΠΎΠ½Π° ΠΈΡΡΠ΅Π·Π»Π°, Π½ΠΎ Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ ΡΡΠΎ Π½Π΅ ΡΠ°ΠΊ. Π ΠΊΠ»ΡΡΠ΅Π²ΠΎΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ, ΠΊΠΎΡΠΎΡΡΠΉ Ρ ΠΎΠ±ΡΡΡΠ½ΠΈΠ» Π²ΡΡΠ΅, https://github.com/facebook/react-native/issues/17530#issuecomment -500865260
cc @cpojer @shergin @sahrens
Π£Π΄Π°Π»ΠΈΡΠ΅ ΠΏΠ°ΠΏΠΊΡ ΡΠ±ΠΎΡΠΊΠΈ Ρ android.
ΠΠ°Ρ_ΠΡΠΎΠ΅ΠΊΡ> android> ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅> ΡΠ±ΠΎΡΠΊΠ°
ΠΠΎΡΠ»Π΅ Π΅Π³ΠΎ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ Π·Π°ΠΏΡΡΡΠΈΡΠ΅ react-native run-android
Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΠΎ.
Π£ ΠΌΠ΅Π½Ρ ΡΠ°Π±ΠΎΡΠ°Π»ΠΈ: D
Π― ΡΠΆΠ΅ ΠΏΡΠΎΠ±ΠΎΠ²Π°Π» ΡΡΠΎ ΠΈ ΡΠ΄Π°Π»ΡΠ» underlineColorAndroid, Π½ΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π½Π΅ ΠΈΡΡΠ΅Π·Π»Π°. Π£ ΠΊΠΎΠ³ΠΎ-Π½ΠΈΠ±ΡΠ΄Ρ Π΅ΡΡΡ Π΄ΡΡΠ³ΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅?
ΠΡΠ° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΠ»Π° ΠΊ ΡΠ±ΠΎΡ Π½Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π΅Π½Π½ΠΎΠΉ ΡΡΠ΅Π΄Π΅. ΠΡΠΎ Π½Π΅ΠΏΡΠΈΡΡΠ½ΡΠΉ Π±Π°Π³, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π΅Π³ΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠ»ΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ. ΠΡ Π½Π°ΡΠ»ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠΎΠ±Π΅ΡΠ°ΡΡΠ΅Π΅ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π΄Π»Ρ Π½Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΈ Ρ Ρ ΠΎΡΠ΅Π» Π±Ρ ΠΏΠΎΠ΄Π΅Π»ΠΈΡΡΡΡ ΡΠ²ΠΎΠΈΠΌΠΈ Π²ΡΠ²ΠΎΠ΄Π°ΠΌΠΈ Π·Π΄Π΅ΡΡ, ΡΡΠΎΠ±Ρ, Π½Π°Π΄Π΅ΡΡΡ, ΡΡΠΊΠΎΠ½ΠΎΠΌΠΈΡΡ Π²ΡΠ΅ΠΌΡ ΠΈ ΡΠ°Π·ΠΎΡΠ°ΡΠΎΠ²Π°Π½ΠΈΠ΅ Π΄ΡΡΠ³ΠΈΡ .
Π’Π΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈΠ΅ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠΈ ΠΈ Π²Π΅ΡΡΠΈΠΈ
ΠΡΠ° ΠΎΡΠΈΠ±ΠΊΠ° ΠΏΡΠΈΠ²Π΅Π»Π° ΠΊ ΡΠ±ΠΎΡ Π½Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π° ΡΡΡΡΠΎΠΉΡΡΠ²Π°Ρ Samsung, Google ΠΈ LG Android. Π£ Π½Π°Ρ Π±ΡΠ»ΠΈ ΠΎΡΡΠ΅ΡΡ ΠΎ ΡΠ±ΠΎΡΡ ΠΈΠ· ΡΠ»Π΅Π΄ΡΡΡΠΈΡ Π²Π΅ΡΡΠΈΠΉ Android:
8.0.0
8.1.0
7.1.1
ΠΠ°ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ:
react-native
: 0.53.0react
: 16.2.0Π§ΡΠΎ Π²ΡΠ·ΡΠ²Π°Π΅Ρ ΡΠ±ΠΎΠΉ
ΠΠ°ΠΊ ΠΎΡΠΌΠ΅ΡΠ°Π»ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ Π² ΡΡΠΎΠΌ ΠΏΠΎΡΠΎΠΊΠ΅, ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°, ΠΏΠΎΡ ΠΎΠΆΠ΅, Π²ΡΠ·Π²Π°Π½Π° ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ²
TextInput
,FlatList
ΠΈScrollView
. Π Π½Π°ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ Ρ Π½Π°Ρ Π΅ΡΡΡ ΡΠΊΡΠ°Π½, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ ΠΎΠ΄ΠΈΠ½TextInput
ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅ΠΌΡΠΉ Π½Π°Π΄FlatList
. ΠΡΠΈ Π½Π°ΠΆΠ°ΡΠΈΠΈ Π½Π° ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π²FlatList
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΈΡ Π½Π° Π½ΠΎΠ²ΡΠΉ ΡΠΊΡΠ°Π½, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ ΡΠΎΡΠΌΡ. ΠΠΎΡΠ½Π΅Π²ΠΎΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ ΡΡΠΎΠΉ ΡΠΎΡΠΌΡ - ΡΡΠΎScrollView
ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΡΠ΄ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ²TextInput
(Π²ΠΌΠ΅ΡΡΠ΅ Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΠΌΠΈ ΠΊΠ½ΠΎΠΏΠΊΠ°ΠΌΠΈ ΠΈ Π΄ΡΡΠ³ΠΈΠΌΠΈ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌΡΠΌΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°ΠΌΠΈ). ΠΠ°ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π²ΡΠ»Π΅ΡΠ°Π΅Ρ, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π½Π°ΠΆΠΈΠΌΠ°Π΅Ρ Π½Π° ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΡΡΠΈΡFlatList
ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² (ΠΎΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π½Π΅ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π·).
ΠΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΡΠ»ΠΎΠΆΠ½ΠΎ. Π€Π°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ, ΠΌΡ Π½Π΅ ΡΠΌΠΎΠ³Π»ΠΈ ΡΡΠΎΠ³ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ. ΠΠΎ ΠΌΡ Π·Π½Π°Π΅ΠΌ, ΡΡΠΎ ΡΠ±ΠΎΠΉ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π½Π° ΡΡΠΎΠΌ ΡΡΠ°ΠΏΠ΅ ΡΠ°Π±ΠΎΡΠ΅Π³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ°, ΠΏΡΠΎΡΠΌΠ°ΡΡΠΈΠ²Π°Ρ Π·Π°ΠΏΠΈΡΠΈ ΡΠ΅Π°Π½ΡΠ° Appsee.
ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΌΡ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, Π½Π°ΠΌ ΠΏΡΠΈΡΠ»ΠΎΡΡ ΠΏΠΎΠ»Π°Π³Π°ΡΡΡΡ Π½Π° ΠΆΡΡΠ½Π°Π»Ρ ΡΠ±ΠΎΠ΅Π² ΠΈΠ· Appsee Π΄Π»Ρ Π΅Π΅ ΠΎΡΠ»Π°Π΄ΠΊΠΈ. Π― ΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π» ΡΡΠ°ΡΡΠΈΡΠΎΠ²ΠΊΡ ΡΡΠ΅ΠΊΠ° ΠΈΠ· ΠΎΡΡΠ΅ΡΠΎΠ² ΠΎ ΡΠ±ΠΎΡΡ Π½ΠΈΠΆΠ΅ (ΠΈ ΠΏΡΠΎΠΏΡΡΡΠΈΠ» Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΠΌΠ½ΡΠ΅ ΡΡΠ°ΡΡΠΊΠΈ). ΠΡΠΎ Π±ΠΎΠ»Π΅Π΅ ΠΈΠ»ΠΈ ΠΌΠ΅Π½Π΅Π΅ ΠΈΠ΄Π΅Π½ΡΠΈΡΠ½ΠΎ ΡΡΠ°ΡΡΠΈΡΠΎΠ²ΠΊΠ°ΠΌ ΡΡΠ΅ΠΊΠ°, ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Π½ΡΠΌ Π² ΡΡΠΎΠΉ Π²Π΅ΡΠΊΠ΅ Π΄ΡΡΠ³ΠΈΠΌΠΈ:0 java.lang.NullPointerException: Attempt to invoke virtual method 'android.graphics.drawable.Drawable android.graphics.drawable.Drawable$ConstantState.newDrawable(android.content.res.Resources)' on a null object reference 1 at android.graphics.drawable.DrawableContainer$DrawableContainerState.createAllFutures(DrawableContainer.java:875) 2 at android.graphics.drawable.DrawableContainer$DrawableContainerState.getOpacity(DrawableContainer.java:1158) 3 at android.graphics.drawable.DrawableContainer.getOpacity(DrawableContainer.java:433) 4 at android.graphics.drawable.InsetDrawable.getOpacity(InsetDrawable.java:258) 5 at android.view.View.computeOpaqueFlags(View.java:16900) 6 at android.view.View.setBackgroundDrawable(View.java:21824) 7 at android.view.View.setBackground(View.java:21717) 8 at android.view.View.<init>(View.java:5577) 9 at android.widget.TextView.<init>(TextView.java:1144) ... 13 at android.widget.EditText.<init>(EditText.java:96) 14 at com.facebook.react.views.textinput.ReactEditText.<init>(ReactEditText.java:91) 15 at com.facebook.react.views.textinput.ReactTextInputManager.createViewInstance(ReactTextInputManager.java:91) 16 at com.facebook.react.views.textinput.ReactTextInputManager.createViewInstance(ReactTextInputManager.java:61) ... 35 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1408)
ΠΡΡΠΎΡΠ½ΠΈΠΊ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ
ΠΡΠΎΡΠΈΡΠ°Π² ΡΡΡ Π²Π΅ΡΠΊΡ ΠΈ ΠΏΡΠΎΠ²Π΅Π΄Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°ΡΠΎΠ² ΠΈΠ»ΠΈ ΠΏΡΠΎΠ²Π΅Π΄Ρ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅, Ρ Π½Π°ΡΠ΅Π» ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ
underlineColorAndroid
prop Π² ΡΠ°ΠΉΠ»Π΅ReactTextInputManager.java
:@ReactProp(name = "underlineColorAndroid", customType = "Color") public void setUnderlineColor(ReactEditText view, <strong i="44">@Nullable</strong> Integer underlineColor) { // Drawable.mutate() can sometimes crash due to an AOSP bug: // See https://code.google.com/p/android/issues/detail?id=191754 for more info Drawable background = view.getBackground(); Drawable drawableToMutate = background.getConstantState() != null ? background.mutate() : background; if (underlineColor == null) { drawableToMutate.clearColorFilter(); } else { drawableToMutate.setColorFilter(underlineColor, PorterDuff.Mode.SRC_IN); } }
ΠΡΡΠ΅Ρ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅, ΡΡΡΠ»ΠΊΠ° Π½Π° ΠΊΠΎΡΠΎΡΡΠΉ Π΅ΡΡΡ Π² ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ, ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΡΡ ΡΡΠ°ΡΡΠΈΡΠΎΠ²ΠΊΡ ΡΡΠ΅ΠΊΠ°:
java.lang.NullPointerException: Attempt to invoke virtual method 'android.graphics.drawable.Drawable android.graphics.drawable.Drawable$ConstantState.newDrawable()' on a null object reference at android.graphics.drawable.LayerDrawable$ChildDrawable.<init>(LayerDrawable.java:1723) at android.graphics.drawable.LayerDrawable$LayerState.<init>(LayerDrawable.java:1792) at android.graphics.drawable.LayerDrawable.createConstantState(LayerDrawable.java:152) at android.graphics.drawable.LayerDrawable.mutate(LayerDrawable.java:1652)
ΠΡΠΎ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ ΡΡΠ°ΡΡΠΈΡΠΎΠ²ΠΊΠ΅ ΡΡΠ΅ΠΊΠ°, Ρ ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΌΡ ΡΡΠ°Π»ΠΊΠΈΠ²Π°Π΅ΠΌΡΡ Π² Π½Π°ΡΠ΅ΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ. Π― Π½Π΅ ΠΏΡΠ΅ΡΠ΅Π½Π΄ΡΡ Π½Π° ΠΏΠΎΠ»Π½ΠΎΠ΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, Π½ΠΎ Π²ΠΏΠΎΠ»Π½Π΅ Π²Π΅ΡΠΎΡΡΠ½ΠΎ, ΡΡΠΎ ΠΏΡΠΈΡΠΈΠ½Π° ΡΠ±ΠΎΡ Π½Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π² ΡΠ°Π±ΠΎΡΠ΅ΠΉ ΡΡΠ΅Π΄Π΅ ΡΠ²ΡΠ·Π°Π½Π° Ρ ΡΡΠ°Π±Π°ΡΡΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΎΡΠΈΠ±ΠΊΠΈ
Drawable.mutate()
. ΠΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ ΠΏΡΡΠ°Π΅ΠΌΡΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎunderlineColorAndroid
Π΄Π»Ρ Π½Π°ΡΠ΅Π³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°TextInput
(ΠΈ, ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π²ΡΠ·ΡΠ²Π°Π΅ΠΌ ΠΌΠ΅ΡΠΎΠ΄ReactTextInputManager.setUnderlineColor
).
ΠΠ°ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ΅Π½Π΄Π΅ΡΠΈΠ»ΠΎTextInput
ΡΠΎ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌΠΈ ΡΠ΅ΠΊΠ²ΠΈΠ·ΠΈΡΠ°ΠΌΠΈ, ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ Π±ΡΠ»ΠΎunderlineColorAndroid="transparent"
:<TextInput ref={this.handleRef} value={this.props.value} autoCorrect={false} autoCapitalize="none" underlineColorAndroid="transparent" onSubmitEditing={this.handleSubmit} onChangeText={this.props.onChangeText} onFocus={this.handleFocused} onBlur={this.handleBlur} clearButtonMode="always" />
ΠΠ°ΠΊ ΠΌΡ ΡΡΠΎ ΠΈΡΠΏΡΠ°Π²ΠΈΠ»ΠΈ
ΠΠ°ΠΌ Π½ΡΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΡΡΡ ΠΎΠΏΠΎΡΡ, ΡΡΠΎΠ±Ρ ΡΠ±ΡΠ°ΡΡ ΠΏΠΎΠ΄ΡΠ΅ΡΠΊΠΈΠ²Π°Π½ΠΈΠ΅ Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ²
TextInput
Π² Π½Π°ΡΠ΅ΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ. ΠΠΎ, ΡΡΠ΄Ρ ΠΏΠΎ Π½Π°ΡΠΈΠΌ Π²ΡΠ²ΠΎΠ΄Π°ΠΌ, Π΅Π³ΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΠΏΡΠΎΠΏΡΡΠΊΠ° Π·Π°ΠΏΡΡΠΊΠ°Π» ΠΎΡΠΈΠ±ΠΊΡ Android, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΈΠ½ΠΎΠ³Π΄Π° ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΠ»Π° ΠΊ ΡΠ±ΠΎΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
Π ΡΡΠ°ΡΡΡΡ, Π΅ΡΡΡ Π΅ΡΠ΅ ΠΎΠ΄ΠΈΠ½ ΡΠΏΠΎΡΠΎΠ± ΡΠ±ΡΠ°ΡΡ ΠΏΠΎΠ΄ΡΠ΅ΡΠΊΠΈΠ²Π°Π½ΠΈΠ΅ Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ²TextInput
Π½Π° Android. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΡΡΡΠΎΠΊΡ Π² ΡΠ°ΠΉΠ»android/app/src/main/res/values/styles.xml
:<resources> <!-- Base application theme. --> <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> <item name="android:windowExitAnimation"><strong i="67">@android</strong>:anim/fade_out</item> <item name="android:windowBackground">@drawable/splash_screen</item> + <item name="android:editTextBackground"><strong i="68">@android</strong>:color/transparent</item> </style> </resources>
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ Ρ ΡΠ°ΠΊΠΆΠ΅ Π²ΠΈΠ΄Π΅Π» ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π½ΠΎ ΡΡΠΎ Π½Π΅ ΡΠ½ΡΠ»ΠΎ Π΄Π»Ρ Π½Π°Ρ ΠΏΠΎΠ΄ΡΠ΅ΡΠΊΠΈΠ²Π°Π½ΠΈΡ:
<resources> <!-- Base application theme. --> <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> <item name="android:windowExitAnimation"><strong i="73">@android</strong>:anim/fade_out</item> <item name="android:windowBackground">@drawable/splash_screen</item> </style> + <!-- This did *not* work for us... --> + <style name="AppEditTextStyle" parent="@style/Widget.AppCompat.EditText"> + <item name="android:background"><strong i="74">@android</strong>:color/transparent</item> + </style> </resources>
ΠΡΠΎ Π½Π΅ ΡΠ΅ΡΠ°Π΅Ρ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ. ΠΡΠΎ ΠΏΡΠΎΡΡΠΎ ΠΎΠ±Ρ ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ ΠΎΡΠΊΠ°Π· ΠΎΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ
underlineColorAndroid
prop Π² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°ΡTextInput
.
Π― ΠΏΠΎΠΊΠ° Π½Π΅ ΠΌΠΎΠ³Ρ Ρ ΡΠ²Π΅ΡΠ΅Π½Π½ΠΎΡΡΡΡ ΡΠΊΠ°Π·Π°ΡΡ, ΡΡΠΎ ΡΡΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΌΠ½Π΅ Π½Π΅ ΡΠ΄Π°Π»ΠΎΡΡ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎ. ΠΡ Π²Π½Π΅Π΄ΡΠΈΠΌ ΡΡΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π² ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ Π½Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π² Π±Π»ΠΈΠΆΠ°ΠΉΡΠΈΠ΅ Π½Π΅Π΄Π΅Π»ΠΈ. ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ Π½Π°ΠΌ ΠΏΡΠΈΠ΄Π΅ΡΡΡ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄ΠΎΠΆΠ΄Π°ΡΡ, ΡΡΠΎΠ±Ρ ΡΠ²ΠΈΠ΄Π΅ΡΡ, ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π»ΠΈ ΡΡΠΎ Π±ΠΎΠ»ΡΡΠ΅. Π― ΠΏΠΎΡΡΠ°ΡΠ°ΡΡΡ Π΄ΠΎΠ»ΠΎΠΆΠΈΡΡ ΠΎ Π½Π°ΡΠΈΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°Ρ .
Π£Π΄Π°ΡΠΈ Π²ΡΠ΅ΠΌ, Π±ΠΎΡΡΡΠΈΠΌΡΡ Ρ ΡΡΠΎΠΉ Π½Π΅ΠΏΡΠΈΡΡΠ½ΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ! ΠΠ°Π΄Π΅ΡΡΡ, ΡΡΠΎ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ.Π― Π·Π½Π°Ρ, ΠΊΠ°ΠΊ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ ΡΡΡ ΡΠΈΡΡΠ°ΡΠΈΡ. Π©Π΅Π»ΠΊΠ½ΠΈΡΠ΅ Π΅ΡΠ΅ ΡΠ°Π· Π² ΡΠΎΡΠΌΠ΅, ΠΊΠ°ΠΊ Π²Ρ ΡΠΊΠ°Π·Π°Π»ΠΈ, Π° Π·Π°ΡΠ΅ΠΌ ΡΠ΅Π»ΠΊΠ½ΠΈΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Π² ΠΏΠ»ΠΎΡΠΊΠΎΠΌ ΡΠΏΠΈΡΠΊΠ΅, ΡΡΠΎΠ±Ρ Π²ΠΎΠΉΡΠΈ Π² ΡΠΎΡΠΌΡ. ΠΠΎΠ²ΡΠΎΡΠΈΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ Π΄Π΅ΡΡΡΡ ΡΠ°Π·, ΠΈ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π±ΡΡΡΡΠ΅Π΅ ΠΏΠΎΡΠ²ΠΈΡΡΡ ΡΡΠ° ΠΎΡΠΈΠ±ΠΊΠ°. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ ΠΎΡΠΈΠ±ΠΊΡ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ ΡΠ΅ΠΌ, ΡΡΠΎ Ρ ΡΠΊΠ°Π·Π°Π».
Π§ΡΠΎ Ρ ΠΌΠΎΠ³Ρ ΡΠ΄Π΅Π»Π°ΡΡ? Π― ΡΠΎΠΆΠ΅ ΡΡΠΎΠ»ΠΊΠ½ΡΠ»ΡΡ Ρ ΡΡΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ!
ΡΠΎΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅. ΠΠ±Π»ΠΈΡΠΎΠ²ΠΊΠ° Π² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π΅
@ jake41 Π― ΠΏΠΎΠΏΡΡΠ°Π»ΡΡ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΡΡΡΠΈΡΡ Π΅Π³ΠΎ, ΠΈ ΠΎΠ½ ΡΡΠ°Π±ΠΎΡΠ°Π», ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΡΡΡΠΈΡΡ? Π― ΡΡΠ°Π»ΠΊΠΈΠ²Π°ΡΡΡ Ρ ΡΡΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ ΠΏΠΎΡΠ»Π΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΠΌΠΎΠ΅Π³ΠΎ expo cli, Ρ Π΄ΡΠΌΠ°Ρ, ΡΡΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π²Π΅ΡΡΠΈΠΈ.
@agrass Π― ΠΏΠΎΠΏΡΠΎΠ±ΡΡ Π²Π°Ρ ΠΌΠ΅ΡΠΎΠ΄. ΠΡΠ³Π»ΡΠ΄ΠΈΡ ΠΌΠ½ΠΎΠ³ΠΎΠΎΠ±Π΅ΡΠ°ΡΡΠ΅.
ΠΠΎ ΠΌΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΎΡΠ΅Π½Ρ ΡΠ΅Π΄ΠΊΠΎ Π²ΡΡ
ΠΎΠ΄ΠΈΡ ΠΈΠ· ΡΡΡΠΎΡ ΠΏΠΎ ΡΡΠΎΠΉ ΠΏΡΠΈΡΠΈΠ½Π΅. ΠΠ·-Π·Π° ΡΡΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π²ΡΠ»Π΅ΡΠ°Π΅Ρ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π·? ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠ³Π΄Π°?
DAU Π½Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΎΠΊΠΎΠ»ΠΎ 8k, ΠΈ ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΡΠ°Π· Π² Π΄Π΅Π½Ρ. Π’Π°ΠΊ ΡΡΠΎ ΡΡΠΎ Π½Π΅Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ, Π½ΠΎ Ρ Π½Π°Π΄Π΅ΡΡΡ Π²ΡΠ»Π΅ΡΠΈΡΡ Π°Π²Π°ΡΠΈΡ.
ΠΡΠΎ-Π½ΠΈΠ±ΡΠ΄Ρ Π½Π°ΡΠ΅Π» ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠ΅Π΅ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ? ΠΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΎΡΠ΅Π½Ρ ΡΠ΅Π΄ΠΊΠΎ ΠΈ ΡΠΎΠ»ΡΠΊΠΎ Π² ΡΠΎΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ΅, Π³Π΄Π΅ Π΅ΡΡΡ ΡΠ΅ΠΊΡΡΠΎΠ²ΠΎΠ΅ ΠΏΠΎΠ»Π΅.
ΠΡΠΎΠ±Π»Π΅ΠΌΠ° Π²ΡΠ΅ Π΅ΡΠ΅ ΡΠΎΡ ΡΠ°Π½ΡΠ΅ΡΡΡ Ρ React Native 0.60
React Native: 0,59,8
Android: 8.1.0
Π£ΡΡΡΠΎΠΉΡΡΠ²ΠΎ: Redmi 5 Plus
Fatal Exception: java.lang.NullPointerException: Attempt to invoke virtual method 'android.graphics.drawable.Drawable android.graphics.drawable.Drawable$ConstantState.newDrawable(android.content.res.Resources)' on a null object reference
at android.graphics.drawable.DrawableContainer$DrawableContainerState.createAllFutures + 875(DrawableContainer.java:875)
at android.graphics.drawable.DrawableContainer$DrawableContainerState.getOpacity + 1158(DrawableContainer.java:1158)
at android.graphics.drawable.DrawableContainer.getOpacity + 433(DrawableContainer.java:433)
at android.graphics.drawable.InsetDrawable.getOpacity + 258(InsetDrawable.java:258)
at android.view.View.computeOpaqueFlags + 15726(View.java:15726)
at android.view.View.setBackgroundDrawable + 20536(View.java:20536)
at android.view.View.setBackground + 20429(View.java:20429)
at android.view.View.(View.java:5256)
at android.widget.TextView.(TextView.java:826)
at android.widget.EditText.(EditText.java:88)
at android.widget.EditText.(EditText.java:84)
at android.widget.EditText.(EditText.java:80)
at android.widget.EditText.(EditText.java:76)
at com.facebook.react.views.textinput.ReactEditText.(ReactEditText.java:89)
at com.facebook.react.views.textinput.ReactTextInputManager.createViewInstance + 105(ReactTextInputManager.java:105)
at com.facebook.react.views.textinput.ReactTextInputManager.createViewInstance + 65(ReactTextInputManager.java:65)
at com.facebook.react.uimanager.ViewManager.createView + 47(ViewManager.java:47)
at com.facebook.react.uimanager.NativeViewHierarchyManager.createView + 256(NativeViewHierarchyManager.java:256)
at com.facebook.react.uimanager.UIViewOperationQueue$CreateViewOperation.execute + 200(UIViewOperationQueue.java:200)
at com.facebook.react.uimanager.UIViewOperationQueue$DispatchUIFrameCallback.dispatchPendingNonBatchedOperations + 1109(UIViewOperationQueue.java:1109)
at com.facebook.react.uimanager.UIViewOperationQueue$DispatchUIFrameCallback.doFrameGuarded + 1080(UIViewOperationQueue.java:1080)
at com.facebook.react.uimanager.GuardedFrameCallback.doFrame + 29(GuardedFrameCallback.java:29)
at com.facebook.react.modules.core.ReactChoreographer$ReactChoreographerDispatcher.doFrame + 166(ReactChoreographer.java:166)
at com.facebook.react.modules.core.ChoreographerCompat$FrameCallback$1.doFrame + 84(ChoreographerCompat.java:84)
at android.view.Choreographer$CallbackRecord.run + 1027(Choreographer.java:1027)
at android.view.Choreographer.doCallbacks + 841(Choreographer.java:841)
at android.view.Choreographer.doFrame + 769(Choreographer.java:769)
at android.view.Choreographer$FrameDisplayEventReceiver.run + 1015(Choreographer.java:1015)
at android.os.Handler.handleCallback + 794(Handler.java:794)
at android.os.Handler.dispatchMessage + 99(Handler.java:99)
at android.os.Looper.loop + 176(Looper.java:176)
at android.app.ActivityThread.main + 6651(ActivityThread.java:6651)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run + 547(RuntimeInit.java:547)
at com.android.internal.os.ZygoteInit.main + 824(ZygoteInit.java:824)
ΠΡΡΡ ΡΠ°ΠΊΠ°Ρ ΠΆΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π·Π΄Π΅ΡΡ
Π Π: 0,59,9
Π£ΡΡΡΠΎΠΉΡΡΠ²ΠΎ: Pixel 2
Android: 9.0
ΠΡΠ»ΠΈ ΡΡΠΎ ΡΠΊΡΠ°Π½ ΡΠΎΡΠΌΡ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΆΠ΄Π°ΡΡ, ΡΡΠΎΠ±Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π²ΠΎ Π²Ρ ΠΎΠ΄Π½ΡΡ Π΄Π°Π½Π½ΡΡ , Ρ ΠΌΠ΅Π½Ρ ΡΡΠΎ ΡΡΠ°Π±ΠΎΡΠ°Π»ΠΎ.
Π― Π½Π°ΡΠ΅Π» ΡΠ΅ΡΠ΅Π½ΠΈΠ΅. ΠΠ΅ ΡΠ²Π΅ΡΠ΅Π½, ΡΡΠΎ ΡΡΠΎ Π½Π°Π΄ΠΎΠ»Π³ΠΎ, Π½ΠΎ ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ Π²Π°ΠΌ ΡΠ°Π±ΠΎΡΠ°ΡΡ, ΠΏΠΎΠΊΠ° Π½Π΅ Π±ΡΠ΄Π΅Ρ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅.
ΠΡΠΎΡΡΠΎ ΠΎΡΠΈΡΡΠΈΡΠ΅ ΡΠ²ΠΎΠΈ Π΄Π΅Π½ΡΠ³ΠΈ: npm start - --reset-cache
Π ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΡΡΡΠΈΡΠ΅ ΠΏΡΠΎΠ΅ΠΊΡ.
Π£ ΠΌΠ΅Π½Ρ ΡΡΠΎ ΡΡΠ°Π±ΠΎΡΠ°Π»ΠΎ.
Π Π²Π°ΡΠ΅ΠΌΡ ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ, Ρ Π΅ΡΠ΅ Π½Π΅ Π²ΡΠ±ΡΠΎΡΠΈΠ» ΡΠ²ΠΎΠΉ ΠΏΡΠΎΠ΅ΠΊΡ.
ΠΠΎΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ:
"devDependencies": {
"@ types / react": "^ 16.8.23",
"@ types / react-native": "^ 0.57.65",
"babel-preset-expo": "^ 6.0.0",
"ΠΌΠ°ΡΠΈΠ½ΠΎΠΏΠΈΡΠ½ΡΠΉ ΡΠ΅ΠΊΡΡ": "^ 3.4.5"
},
ΠΠ΄Π΅ΡΡ Π²Π·Π²Π΅ΡΠΈΠ²Π°Π΅ΡΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ExpoKit (SDK 34). Π£ ΠΌΠ΅Π½Ρ Π±ΡΠ»Π° ΡΡΠ° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π½Π° Π²ΡΠ΅Ρ Π²Π΅ΡΡΠΈΡΡ ExpoKit, Π²ΠΊΠ»ΡΡΠ°Ρ ΠΏΠΎΡΠ»Π΅Π΄Π½ΡΡ. Π― ΠΏΡΠΎΠ±ΠΎΠ²Π°Π» ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΡ ΡΡΠΈ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΠΌΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡΠΌΠΈ, ΠΈ ΠΏΠΎΠΊΠ° Π²ΡΠ΅ Ρ ΠΎΡΠΎΡΠΎ.
Π‘ΠΌΠ΅Π½Π° ΡΡΠΈΠ»Ρ Π² ΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠΌ ΠΈΡΠΎΠ³Π΅ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΡΠ»ΠΈΡΠ°Π»Π°ΡΡ ΠΎΡ @Hopding - Ρ ΠΌΠ΅Π½Ρ ΡΡΠ°Π±ΠΎΡΠ°Π»ΠΎ Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ ΠΏΡΠΎΡΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½ΠΎΠ΅. Π― ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ» ΡΡΠΈΠ»Ρ ExponentEditText
Π² styles.xml ΠΊΠ°ΠΊ ΡΠ°ΠΊΠΎΠ²ΠΎΠΉ:
<style name="ExponentEditText" parent="<strong i="9">@android</strong>:style/Widget.EditText">
<item name="android:padding">0dp</item>
<item name="android:textColorHint">#c8c8c8</item>
<item name="android:textColor">#000000</item>
<item name="android:background"><strong i="10">@android</strong>:color/transparent</item>
</style>
ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π½Π° android:editTextBackground
Π½Π΅ ΡΡΠ°Π±ΠΎΡΠ°Π»ΠΎ (Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΡΡΠΎ ΠΊΠ°ΠΊ-ΡΠΎ ΡΠ²ΡΠ·Π°Π½ΠΎ Ρ ΡΠΆΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠΌ ΡΡΠΈΠ»Π΅ΠΌ ExponentEditText
). ΠΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ, ΡΡΠΎ ΠΌΠ½Π΅ Π½Π΅ ΠΏΡΠΈΡΠ»ΠΎΡΡ ΠΈΡΠΏΡΠ°Π²Π»ΡΡΡ ΠΎΠΏΠΎΡΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, ΡΡΡΠ°Π½ΠΎΠ²ΠΈΠ² underlineColorAndroid
Π½Π° transparent
. Π£ ΠΌΠ΅Π½Ρ Π±ΡΠ»Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Ρ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ; ΠΎΠ΄Π½Π°ΠΊΠΎ Ρ ΡΡΠ²ΡΡΠ²ΠΎΠ²Π°Π», ΡΡΠΎ Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ ΡΡΠΎ Π±ΡΠ»ΠΎ ΡΠ»ΡΡΡΠ΅Π½ΠΈΠ΅, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΌΠ½Π΅ Π±ΠΎΠ»ΡΡΠ΅ Π½Π΅ ΠΏΡΠΈΡ
ΠΎΠ΄ΠΈΠ»ΠΎΡΡ ΠΈΠΌΠ΅ΡΡ Π΄Π΅Π»ΠΎ Ρ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠΌ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ TextInput, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ ΠΏΡΡΡ, ΠΈ Ρ ΠΏΡΡΠ°ΡΡΡ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠΈΡΡ Π΄ΡΡΠ³ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ ΡΡΠ΄ΠΎΠΌ Ρ Π½ΠΈΠΌ.
Π Π°Π½ΡΡΠ΅ ΠΌΠ½Π΅ ΡΠ΄Π°Π²Π°Π»ΠΎΡΡ Π½Π°Π΄Π΅ΠΆΠ½ΠΎ Π²ΡΠ·ΡΠ²Π°ΡΡ ΠΎΡΠΈΠ±ΠΊΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠ½ΠΎΠΏΠΊΠΈ Π΄ΠΈΠ°Π³Π½ΠΎΡΡΠΈΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΡ Ρ Π΄ΠΎΠ±Π°Π²ΠΈΠ» Π² Π½Π°ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π΄ΠΎΠ±Π°Π²Π»ΡΠ»ΠΎ 500 TextInputs Π² SectionList. Π― Π±Ρ ΡΠΊΠ°Π·Π°Π», ΡΡΠΎ ΠΎΠ½ ΡΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ Π² 60% ΡΠ»ΡΡΠ°Π΅Π² Ρ ΠΏΠ΅ΡΠ²ΠΎΠΉ ΠΏΠΎΠΏΡΡΠΊΠΈ, 90% ΡΠΎ Π²ΡΠΎΡΠΎΠΉ ΠΈ 100% Ρ ΡΡΠ΅ΡΡΠ΅ΠΉ, ΠΏΠΎ ΠΌΠΎΠ΅ΠΌΡ ΠΎΠΏΡΡΡ. ΠΠΎΡΠ»Π΅ Π²Π½Π΅ΡΠ΅Π½ΠΈΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΏΡΠΎΠ±ΠΎΠ²Π°Π» Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ 10 ΡΠ°Π· Π±Π΅Π· ΠΎΡΠΈΠ±ΠΎΠΊ.
ΠΡΡΡ ΡΠ°ΠΊΠ°Ρ ΠΆΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π·Π΄Π΅ΡΡ
Π Π: 0,55,4
Π£ΡΡΡΠΎΠΉΡΡΠ²ΠΎ: MI 8 Lite
Android: 8.1.0
java.lang.NullPointerException: ΠΏΠΎΠΏΡΡΠΊΠ° Π²ΡΠ·Π²Π°ΡΡ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ android.graphics.drawable.Drawable android.graphics.drawable.Drawable $ ConstantState.newDrawable (android.content.res.Resources) Π΄Π»Ρ ΡΡΡΠ»ΠΊΠΈ Π½Π° Π½ΡΠ»Π΅Π²ΠΎΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ
Π² android.graphics.drawable.DrawableContainer $ DrawableContainerState.createAllFutures (DrawableContainer.java:875)
Π² android.graphics.drawable.DrawableContainer $ DrawableContainerState.getOpacity (DrawableContainer.java:1158)
Π² android.graphics.drawable.DrawableContainer.getOpacity (DrawableContainer.java:433)
Π² android.graphics.drawable.InsetDrawable.getOpacity (InsetDrawable.java:258)
Π² android.view.View.computeOpaqueFlags (View.java:15748)
Π² android.view.View.setBackgroundDrawable (View.java:20558)
Π² android.view.View.setBackground (View.java:20451)
Π² android.view.View.
Π² android.widget.TextView.
Π² android.widget.EditText.
Π² android.widget.EditText.
Π² android.widget.EditText.
Π² android.widget.EditText.
Π² com.facebook.react.views.textinput.ReactTextInputShadowNode.setThemedContext (ReactTextInputShadowNode.java:80)
Π² com.facebook.react.uimanager.UIImplementation.createView (UIImplementation.java:282)
Π² com.facebook.react.uimanager.UIManagerModule.createView (UIManagerModule.java:366)
Π² java.lang.reflect.Method.invoke (Method.java)
Π² com.facebook.react.bridge.JavaMethodWrapper.invoke (JavaMethodWrapper.java:372)
Π² com.facebook.react.bridge.JavaModuleWrapper.invoke (JavaModuleWrapper.java:160)
Π² com.facebook.react.bridge.queue.NativeRunnable.run (NativeRunnable.java)
Π² android.os.Handler.handleCallback (Handler.java:790)
Π² android.os.Handler.dispatchMessage (Handler.java:99)
Π² com.facebook.react.bridge.queue.MessageQueueThreadHandler.dispatchMessage (MessageQueueThreadHandler.java:29)
Π² android.os.Looper.loop (Looper.java:164)
Π² com.facebook.react.bridge.queue.MessageQueueThreadImpl $ 3.run (MessageQueueThreadImpl.java:192)
Π² java.lang.Thread.run (Thread.java:764)
ΠΠ΅ΡΡΡΡΠ°Π½ΠΈΠΌΠΎΠ΅ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅: java.lang.NullPointerException
ΠΠΎΠΏΡΡΠΊΠ° Π²ΡΠ·Π²Π°ΡΡ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ android.graphics.drawable.Drawable android.graphics.drawable.Drawable $ ConstantState.newDrawable (android.content.res.Resources) Π΄Π»Ρ ΡΡΡΠ»ΠΊΠΈ Π½Π° Π½ΡΠ»Π΅Π²ΠΎΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ
Π΅ΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΡ
ΡΡΠ»ΠΎΠ²ΠΈΡΡ
1804
ΠΠ΅ΡΡΠΈΡ Android: 9
ΠΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π΄Π»Ρ ΠΌΠ΅Π½Ρ. React Native Π²Π΅ΡΡΠΈΡ 0.60.4, ΡΠ°Π±ΠΎΡΠ°ΡΡΠ°Ρ Π½Π° Android 9. ΠΠ΄Π½Π°ΠΊΠΎ ΠΎΡΠ΅Π½Ρ Π½Π΅ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ ΠΈ ΡΠ΅Π΄ΠΊΠΎ.
ΠΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π΄Π»Ρ ΠΌΠ΅Π½Ρ. React Native Π²Π΅ΡΡΠΈΡ 0.60.4, ΡΠ°Π±ΠΎΡΠ°ΡΡΠ°Ρ Π½Π° Android 9. ΠΠ΄Π½Π°ΠΊΠΎ ΠΎΡΠ΅Π½Ρ Π½Π΅ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ ΠΈ ΡΠ΅Π΄ΠΊΠΎ.
Π’ΠΎ ΠΆΠ΅ ΠΈ ΡΠΎ ΠΌΠ½ΠΎΠΉ ...
Π’ΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅, React Native 0.60.4 Π½Π° Android 9
Π― ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ React Native Ρ Expo, ΠΈ ΡΠ΅Π³ΠΎΠ΄Π½Ρ ΡΡΡΠΎΠΌ Ρ ΠΌΠ΅Π½Ρ Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°.
Π‘Π½Π°ΡΠ°Π»Π° Ρ ΠΏΠΎΠΏΡΡΠ°Π»ΡΡ ΠΏΠΎΠΌΠ΅ΡΡΠΈΡΡ ΡΡΡ ΡΡΡΠΎΠΊΡ Π² ΡΠ²ΠΎΠΉ ΡΠ°ΠΉΠ» styles.xml AppTheme ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="android:editTextBackground"><strong i="9">@android</strong>:color/transparent</item>
</style>
ΠΡΠΎ Π½Π΅ ΡΡΠ°Π±ΠΎΡΠ°Π»ΠΎ, ΠΏΠΎΡΡΠΎΠΌΡ Ρ ΠΏΠΎΠΈΡΠΊΠ°Π» Π΄ΡΡΠ³ΠΎΠ΅ ΠΌΠ΅ΡΡΠΎ ΠΈ, Π½Π°ΠΊΠΎΠ½Π΅Ρ, ΠΏΠΎΠΌΠ΅ΡΡΠΈΠ» Π΅Π³ΠΎ ΡΡΠ΄Π°:
<style name="Theme.ReactNative.AppCompat.Light.NoActionBar.FullScreen"
parent="@style/Theme.ReactNative.AppCompat.Light">
<item name="android:windowNoTitle">true</item>
<item name="windowActionBar">false</item>
<item name="android:windowFullscreen">true</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:editTextBackground"><strong i="16">@android</strong>:color/transparent</item>
</style>
ΠΠ°ΠΆΠ΅ΡΡΡ, ΡΠ΅ΠΏΠ΅ΡΡ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΎΡΠ»ΠΈΡΠ½ΠΎ
ΠΡΠ° Π°Π²Π°ΡΠΈΡ Π½Π°ΡΡΠΎΠ»ΡΠΊΠΎ ΡΠ»ΡΡΠ°ΠΉΠ½Π°. Π’Π° ΠΆΠ΅ ΡΡΠ°ΡΡΠΈΡΠΎΠ²ΠΊΠ° ΡΡΠ΅ΠΊΠ°, v0.60.4. Π’Π° ΠΆΠ΅ ΠΎΡΠΈΠ±ΠΊΠ°. ΠΡΡΡ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅? ΠΡΠΎ-ΡΠΎ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠΈΠ» ΡΠ΄Π°Π»ΠΈΡΡ ΠΏΠ°ΠΏΠΊΡ ΡΠ±ΠΎΡΠΊΠΈ, Π½ΠΎ Ρ Π½Π΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ, ΠΏΡΠΈ ΡΠ΅ΠΌ Π·Π΄Π΅ΡΡ Π½ΡΠ»Π΅Π²ΠΎΠΉ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ? Π Π΅ΡΠ΅Π½ΠΈΠ΅ Π²ΡΠ΅Π³Π΄Π° ΠΏΠΎΡ ΠΎΠΆΠ΅ Π½Π° ΠΏΠ΅ΡΠ΅ΡΡΡΠΎΠΉΠΊΡ / ΠΏΠΎΠ²ΡΠΎΡΠ½ΡΠΉ Π·Π°ΠΏΡΡΠΊ
@armagedan @jacobbeasley et al. ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° _is_ ΠΏΡΠ΅ΡΡΠ²ΠΈΡΡΠ°Ρ, ΠΏΠΎΡΡΠΎΠΌΡ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ drop-in, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π½ΡΠΉ Π² ΠΌΠΎΠ΅ΠΌ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ Π²ΡΡΠ΅, ΡΡΠΎΠ±Ρ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ Π΅Π³ΠΎ. ΠΡΠΎΡ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ ΡΠ°ΠΊΠΆΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π°Π½Π°Π»ΠΈΠ· ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΈ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ ΠΌΠ½Π΅ ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΠΌ Π΄ΡΡΠ³ΠΈΠΌ.
@wxjer, Ρ ΠΏΡΡΠ°ΡΡΡ ΠΎΡΠΈΡΡΠΈΡΡ Π΄Π°Π½Π½ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΏΡΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠ΅, ΠΈ ΠΎΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ! ΡΡ ΠΌΠΎΠΆΠ΅ΡΡ ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ ΡΡΠΎ
Π’ΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅, React Native 0.60.4 Π½Π° Android 9 ΠΈ Android 8
ΠΡΠ±ΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅?
ΠΡΠ»ΠΈ ΠΊΡΠΎ-ΡΠΎ Ρ ΠΎΡΠΎΡΠΎ ΡΠ°Π·Π±ΠΈΡΠ°Π΅ΡΡΡ Π² ΠΎΡΠ»Π°Π΄ΠΊΠ΅ Android, Π²ΠΎΡ Π½Π°ΡΠ° ΠΎΡΠΈΠ±ΠΊΠ°, ΠΎ ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠΎ ΡΠΎΠΎΠ±ΡΠ°Π»ΠΎΡΡ.
ΡΠ΅Π°Π³ΠΈΡΠΎΠ²Π°ΡΡ-ΡΠΎΠ΄Π½ΠΎΠΉ 0.60.4
https://sentry.io/share/issue/e0c581e2e99a4ca48199647b8bd3f497/
Π’ΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅, React Native 0.60.5 Π½Π° Android 9
ΠΠ΄ΡΠ°Π²ΡΡΠ²ΡΠΉΡΠ΅! ΠΡ ΡΠ΅ΡΠΈΠ»ΠΈ ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, ΡΠ΄Π°Π»ΠΈΠ² ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ underlineColorAndroid ΠΈΠ· Π½Π°ΡΠ΅Π³ΠΎ TextInput ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΠ² ΡΡΡ ΡΡΡΠΎΠΊΡ Π² ΡΠ°ΠΉΠ» styles.xml Π²Π½ΡΡΡΠΈ (android / src / main / res / values ββ/ styles.xml)
<item name="android:editTextBackground"><strong i="6">@android</strong>:color/transparent</item>
ΠΡΠΎ ΠΎΡΡΠ΅Ρ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅?
Π΄Π°
ΠΡ ΡΠΈΡΠ°Π»ΠΈ ΠΡΠ°Π²ΠΈΠ»Π° ΡΡΠ°ΡΡΠΈΡ ?
Π΄Π°, ΠΌΠ½Π΅ ΠΎΡΠ΅Π½Ρ ΠΆΠ°Π»Ρ, ΡΡΠΎ Ρ Π½Π΅ ΠΌΠΎΠ³Ρ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎΠ± ΡΡΠΎΠΌ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΈ, ΠΊΡΠΎΠΌΠ΅ ΡΡΠ°ΡΡΠΈΡΠΎΠ²ΠΊΠΈ ΡΡΠ΅ΠΊΠ°, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΎΡΡΠ΅Ρ ΠΎ ΡΠ±ΠΎΠ΅ Π±ΡΠ» ΡΠΎΠ±ΡΠ°Π½ ΠΈΠ· Google Analytics, Ρ Π½Π΅ Π·Π½Π°Ρ, ΡΡΠΎΠ±Ρ ΡΠ½ΠΎΠ²Π° ΠΏΠΎΡΠ²ΠΈΠ»ΠΎΡΡ ΡΡΠΎ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅.
ΠΠΊΡΡΠΆΠ°ΡΡΠ°Ρ ΠΎΠ±ΡΡΠ°Π½ΠΎΠ²ΠΊΠ°
ΠΠΊΡΡΠΆΠ°ΡΡΠ°Ρ ΠΎΠ±ΡΡΠ°Π½ΠΎΠ²ΠΊΠ°:
ΠΠ‘: macOS Sierra 10.12.6
Π£Π·Π΅Π»: 8.4.0
ΠΡΡΠΆΠ°: 0,27,5
npm: 5.4.0
Android Studio: 3.0ΠΠ°ΠΊΠ΅ΡΡ: (Ρ ΠΎΡΠ΅Π» => ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½)
ΡΠ΅Π°Π³ΠΈΡΠΎΠ²Π°ΡΡ-ΡΠΎΠ΄Π½ΠΎΠΉ: 0.51.0 => 0.51.0
ΡΠ΅Π°Π³ΠΈΡΠΎΠ²Π°ΡΡ: 16.0.0-alpha.12 => 16.0.0-alpha.12Π¦Π΅Π»Π΅Π²Π°Ρ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°: Android (7.1.1)
ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΡΠΉ: MIX 2
Π°Π½Π΄ΡΠΎΠΈΠ΄: 7.1.1
java.lang.NullPointerException:
ΡΠΎΠ±Π»Π°Π·Π½ Π²ΡΠ·Π²Π°ΡΡ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ android.graphics.drawable.Drawable android.graphics.drawable.Drawable $ ConstantState.newDrawable (android.content.res.Resources) Π΄Π»Ρ ΡΡΡΠ»ΠΊΠΈ Π½Π° Π½ΡΠ»Π΅Π²ΠΎΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ Π²
android.graphics.drawable.DrawableContainer $ DrawableContainerState.getChild (DrawableContainer.java:888) Π²
android.graphics.drawable.DrawableContainer.selectDrawable (DrawableContainer.java:466) Π²
android.graphics.drawable.StateListDrawable.onStateChange (StateListDrawable.java:104) Π²
android.graphics.drawable.Drawable.setState (Drawable.java:735) Π²
android.graphics.drawable.DrawableWrapper.onStateChange (DrawableWrapper.java:331) Π²
android.graphics.drawable.Drawable.setState (Drawable.java:735) Π²
android.graphics.drawable.LayerDrawable.onStateChange (LayerDrawable.java:1488) Π²
android.graphics.drawable.Drawable.setState (Drawable.java:735) Π²
android.view.View.drawableStateChanged (View.java:18002) Π²
android.widget.TextView.drawableStateChanged (TextView.java:4097) Π²
android.view.View.refreshDrawableState (View.java:18071) Π²
android.view.View.setPressed (View.java:8543) Π²
android.view.View.setPressed (View.java:8521) Π²
android.view.View.onTouchEvent (View.java:11218) Π²
android.widget.TextView.onTouchEvent (TextView.java:8467) Π²
com.facebook.react.views.textinput.ReactEditText.onTouchEvent (ReactEditText.java:150)
ΡΠ΅Π°Π³ΠΈΡΠΎΠ²Π°ΡΡ-ΡΠΎΠ΄Π½ΠΎΠΉ 0.60.4 Ρ ΡΠΎΠΆΠ΅
ΠΠ΅Π΄Π°Π²Π½ΠΎ Π½Π°ΡΠ°Π» ΡΡΠ°Π»ΠΊΠΈΠ²Π°ΡΡΡΡ Ρ ΡΡΠΎΠΉ Π°Π²Π°ΡΠΈΠ΅ΠΉ, RN 0.60.5, Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ Π½Π° Android 8/9 (Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, 10 ΡΠΎΠΆΠ΅, Π΅ΡΠ΅ Π½Π΅ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π» ΡΡΠΎ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ).
https://github.com/facebook/react-native/issues/17530#issuecomment -504044357, ΠΏΠΎΡ ΠΎΠΆΠ΅, ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ ΠΌΠ½Π΅. ΠΠ±ΡΡΠ½ΠΎ ΡΠ±ΠΎΠΉ ΠΏΡΠΎΡΠ²Π»ΡΠ΅ΡΡΡ Π² ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ²ΡΡ ~ 5 ΠΈΡΠ΅ΡΠ°ΡΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΎΡ ΠΎΠ΄ΠΈΡ ΡΠ΅ΡΡΠΎΠ²ΡΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ. ΠΠΎΡΠ»Π΅ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ ΡΡΠΎΠΉ ΡΡΡΠΎΠΊΠΈ ΠΎΠ½ Π²ΡΠΏΠΎΠ»Π½ΡΠ»ΡΡ Π±Π΅Π· ΡΠ±ΠΎΠ΅Π² Π² ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ~ 200 ΠΈΡΠ΅ΡΠ°ΡΠΈΠΉ, ΠΏΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ Ρ ΠΎΡΡΠ°Π½ΠΎΠ²ΠΈΠ» Π΅Π³ΠΎ.
edit: ΠΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ, Ρ ΠΌΠΎΠ³Ρ Π½Π°Π΄Π΅ΠΆΠ½ΠΎ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ ΡΡΠΎ ΠΈ Π½Π° Android 6, Ρ ΠΎΡΡ, ΠΎΠΏΡΡΡ ΠΆΠ΅, ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅ΠΌΠΎΠ΅ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅, ΠΏΠΎΡ ΠΎΠΆΠ΅, ΡΠ΅ΡΠ°Π΅Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ.
Π’ΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅ Π·Π΄Π΅ΡΡ Π½Π° RN 0.61
ΠΡΠΈΠ²Π΅Ρ, ΡΠ΅Π±ΡΡΠ°, Ρ ΠΌΠ΅Π½Ρ ΡΡΠ°Π±ΠΎΡΠ°Π»ΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅
ΠΡΠ° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π²ΡΠ΅ Π΅ΡΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ, ΠΈ ΠΌΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ»ΠΎΠΌΠ°Π»ΠΎΡΡ - Π²ΡΠ΅ ΡΠ°Π±ΠΎΡΠ°Π»ΠΎ Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΠΎ, Ρ Π΄ΠΎΠ±Π°Π²ΠΈΠ» Π²ΡΠ·ΠΎΠ² fetch, ΠΈ ΡΠ΅ΠΏΠ΅ΡΡ, Π΄Π°ΠΆΠ΅ ΠΊΠΎΠ³Π΄Π° Ρ ΠΏΡΠΎΠΊΠΎΠΌΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π» ΡΡΠΎ, Ρ Π½Π΅ ΠΌΠΎΠ³Ρ ΡΠ½ΠΎΠ²Π° Π·Π°ΠΏΡΡΡΠΈΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅: cry: Π― ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Expo, ΠΊΡΡΠ°ΡΠΈ
Π ΠΠΠΠΠ’ΠΠ ΠΠΠΠ’Π¬: Ρ ΠΈΡΠΏΡΠ°Π²ΠΈΠ» ΡΠ²ΠΎΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π΄Π»Ρ expo, ΠΏΠ΅ΡΠ΅ΡΡΡΠ°Π½ΠΎΠ²ΠΈΠ² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ expo Π½Π° ΠΌΠΎΠ΅ΠΌ ΡΡΡΡΠΎΠΉΡΡΠ²Π΅
Π’Π°ΠΊΠΆΠ΅ ΡΡΠΎΠ»ΠΊΠ½ΡΠ»ΡΡ Ρ ΡΡΠΎΠΉ ΠΎΡΠΈΠ±ΠΊΠΎΠΉ (RN: 0.61.1, Android 10 api 29). 'npm start --reset-cache' ΠΈΡΠΏΡΠ°Π²ΠΈΠ» ΠΎΡΠΈΠ±ΠΊΡ.
@johnbowdenatfacet , Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π²Ρ Π·Π°Ρ ΠΎΡΠΈΡΠ΅ ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ ΡΠ΅ΡΡΠ° drop-in, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π½ΡΠΉ Π² ΠΌΠΎΠ΅ΠΌ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ Π²ΡΡΠ΅, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠ΄ΠΈΡΡ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅.
Π’Π° ΠΆΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°.
React-Native 0.59.10
Android
java.lang.NullPointerException: ΠΏΠΎΠΏΡΡΠΊΠ° Π²ΡΠ·Π²Π°ΡΡ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ android.graphics.drawable.Drawable android.graphics.drawable.Drawable $ ConstantState.newDrawable (android.content.res.Resources) Π΄Π»Ρ ΡΡΡΠ»ΠΊΠΈ Π½Π° Π½ΡΠ»Π΅Π²ΠΎΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ
Π² android.graphics.drawable.DrawableContainer $ DrawableContainerState.createAllFutures (DrawableContainer.java:875)
Π² android.graphics.drawable.DrawableContainer $ DrawableContainerState.getOpacity (DrawableContainer.java:1158)
Π² android.graphics.drawable.DrawableContainer.getOpacity (DrawableContainer.java:433)
Π² android.graphics.drawable.InsetDrawable.getOpacity (InsetDrawable.java:258)
Π’Π° ΠΆΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°.
ΠΠ΄ΡΠ°Π²ΡΡΠ²ΡΠΉΡΠ΅! ΠΡ ΡΠ΅ΡΠΈΠ»ΠΈ ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, ΡΠ΄Π°Π»ΠΈΠ² ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ underlineColorAndroid ΠΈΠ· Π½Π°ΡΠ΅Π³ΠΎ TextInput ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΠ² ΡΡΡ ΡΡΡΠΎΠΊΡ Π² ΡΠ°ΠΉΠ» styles.xml Π²Π½ΡΡΡΠΈ (android / src / main / res / values ββ/ styles.xml)
<item name="android:editTextBackground"><strong i="7">@android</strong>:color/transparent</item>
Π Π΅ΡΠΈΠ» ΠΌΠΎΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, Π±ΠΎΠ»ΡΡΠΎΠ΅ ΡΠΏΠ°ΡΠΈΠ±ΠΎ.
Π― ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠΎ Π·Π°ΠΏΡΡΡΠΈΠ» (react-native run-android), ΡΡΠΎ ΡΠ΅ΡΠΈΠ»ΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΡΠΎ ΠΌΠ½ΠΎΠΉ
Π’Π° ΠΆΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Ρ 0.61.3
Π― Π²ΡΠ΅ Π΅ΡΠ΅ ΡΡΠ°Π»ΠΊΠΈΠ²Π°ΡΡΡ Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ. ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ ΡΠΎΠΎΠ±ΡΠ°ΡΡ ΠΎ ΡΠ±ΠΎΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Android, Π½ΠΎ ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π½Π°ΡΡΠΎΠ»ΡΠΊΠΎ ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎ, ΡΡΠΎ Ρ Π½Π΅ ΠΌΠΎΠ³Ρ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ ΠΈΡ .
+1, ΡΠΎ ΠΌΠ½ΠΎΠΉ ΡΠΎΠΆΠ΅ ΡΠ»ΡΡΠΈΠ»ΠΎΡΡ
@pedrosimao , Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π²Ρ Π·Π°Ρ ΠΎΡΠΈΡΠ΅ ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ ΡΠ΅ΡΡΠ° drop-in, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π½ΡΠΉ Π² ΠΌΠΎΠ΅ΠΌ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ Π²ΡΡΠ΅, ΡΡΠΎΠ±Ρ Π½Π°Π΄Π΅ΠΆΠ½ΠΎ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ ΠΎΡΠΈΠ±ΠΊΡ. ΠΡΠΎΡ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ ΡΠ°ΠΊΠΆΠ΅ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π½Π° ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ.
Π― ΡΡΠ·ΠΈΠ» ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π΄Π»Ρ ΠΌΠ΅Π½Ρ Π½Π° Π²Ρ ΠΎΠ΄Π΅, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°Π½ ΠΈΠ· ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠΉ Π±Π°Π·Ρ.
ΠΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΎ:
Π― ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΡΡΡΠΈΠ» ΡΠ²ΠΎΠΉ ΠΊΠΎΠΌΠΏΡΡΡΠ΅Ρ ΠΈ ΡΠ΅Π»Π΅ΡΠΎΠ½, Π° Π·Π°ΡΠ΅ΠΌ ΡΠ½ΠΎΠ²Π° Π·Π°ΠΏΡΡΡΠΈΠ», ΡΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π»ΠΎ ΠΊΠ°ΠΊ ΡΠ°ΡΠΌ :)
Π£ ΠΌΠ΅Π½Ρ ΡΠΎΠΆΠ΅ Π±ΡΠ»ΠΎ ΡΡΠΎ. Π― ΡΠ΅ΡΠΈΠ» ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ Π·Π°ΠΏΡΡΡΠΈΠ² Π²ΡΡΡΠ°Π²ΠΊΡ ΡΠ΅ΡΠ΅Π· expo r -c
Π‘ΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎ ΡΠΎΠΉ ΠΆΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ΅ Π΄Π»Ρ RN ββ0.59.10
Π― ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ», ΡΡΠΎ ΡΡΡΠ½ΠΎΠ΅ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ - ΡΡΠΎ ΠΎΡΠ΅Π½Ρ Π½Π΅ΠΏΡΠΎΡΡΠ°Ρ Π·Π°Π΄Π°ΡΠ°, ΠΏΠΎΡΡΠΎΠΌΡ Ρ Π½Π°ΠΏΠΈΡΠ°Π» ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Π΄Π»Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΡΠ΅Π½Π°ΡΠΈΠ΅Π², ΠΎ ΠΊΠΎΡΠΎΡΡΡ Π»ΡΠ΄ΠΈ ΡΠΎΠΎΠ±ΡΠ°Π»ΠΈ Π²ΡΡΠ΅. ΠΡ Π½Π°ΠΉΠ΄Π΅ΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Π½ΠΈΠΆΠ΅. ΠΠ°ΠΌ ΠΏΡΠΎΡΡΠΎ Π½ΡΠΆΠ½ΠΎ Π³Π΄Π΅-ΡΠΎ Π΅Π³ΠΎ ΠΎΡΡΠ΅Π½Π΄Π΅ΡΠΈΡΡ, ΡΡΠΎΠ±Ρ ΠΎΠ½ Π²ΡΠΏΠΎΠ»Π½ΡΠ» ΡΠ²ΠΎΡ ΡΠ°Π±ΠΎΡΡ.
ΠΡΠΈ ΡΡΠΎΠΌ Ρ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ», ΡΡΠΎ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΠΎΠ»ΡΠΊΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅ Π² AppTheme Π² styles.xml, ΠΊΠ°ΠΊ ΡΡΠΎ Π±ΡΠ»ΠΎ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΎ @Hopding
<item name="android:editTextBackground"><strong i="8">@android</strong>:color/transparent</item>
ΠΠΎΠ»ΡΡΠ΅ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ ΡΡΠ΅Π±ΠΎΠ²Π°Π»ΠΎΡΡ, ΠΈ _Π½Π΅ Π±ΡΠ»ΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ_ ΠΈΠ·Π±Π΅Π³Π°ΡΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ
underlineColorAndroid
, ΠΏΠΎΡΡΠΎΠΌΡ Π½Π΅ ΠΈΠΌΠ΅Π»ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, ΡΡΠΎ React Native ΡΠ΅ΠΏΠ΅ΡΡ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ Π΅Π³ΠΎ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ.ΠΡΠ½ΠΎΠ²Π½ΡΠΌ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΊΠΎΠΌ ΡΡΠΎΠ³ΠΎ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΎ, ΡΡΠΎ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΡΡΠΈΠ»Ρ Π²Π°ΡΠΈΡ TextInputs, ΡΡΠΎΠ±Ρ ΡΡΠ΅ΡΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠΈΡΡΡΡΡΡ ΠΏΠΎΡΠ΅ΡΡ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ, Π° ΡΠ°ΠΊΠΆΠ΅ Π²Ρ ΠΏΠΎΡΠ΅ΡΡΠ΅ΡΠ΅ ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ΄ΡΠ΅ΡΠΊΠΈΠ²Π°Π½ΠΈΡ, ΡΡΠΎ Π΄Π»Ρ Π½Π°Ρ Π±ΡΠ»ΠΎ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²ΠΎΠΌ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΌΡ Π²ΡΠ΅Π³Π΄Π° ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π»ΠΈ Π΅Π³ΠΎ Β«ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΡΠΌΒ» ΡΡΠΎΠ±Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΎΠ²Π°ΡΡ iOS. ΠΡΠ»ΠΈ Π²Π°ΠΌ ΡΡΠΎ Π½ΡΠΆΠ½ΠΎ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΎΠ·Π΄Π°ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ-ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π΅Ρ
onFocus
ΠΈonBlur
ΠΈ Π΄Π΅Π»Π°Π΅Ρ Π²Π°ΡΠ΅ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ ΠΏΠΎΠ΄ΡΠ΅ΡΠΊΠΈΠ²Π°Π½ΠΈΠ΅.ΠΠΎΡ Π²Π΅ΡΡΠΈΡ React Native - 0.57.3.
ΠΠΎΡ Π΅ΡΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π²Π΅ΡΠ΅ΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ Ρ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ» Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ²ΠΎΠ΅Π³ΠΎ ΡΠ΅ΡΡΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°:
- Π― Π²ΠΎΠΎΠ±ΡΠ΅ Π½Π΅ ΠΌΠΎΠ³ Π²ΡΠ·Π²Π°ΡΡ ΡΠ±ΠΎΠΉ Π½Π° ΠΌΠΎΠ΅ΠΌ ΠΏΠ»Π°Π½ΡΠ΅ΡΠ΅ Android Ρ Π½ΠΈΠ·ΠΊΠΈΠΌΠΈ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠ°ΠΌΠΈ. ΠΠ΄Π½Π°ΠΊΠΎ ΡΡΠΎ Π±ΡΠ»ΠΎ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ Π½Π° ΠΌΠΎΠ΅ΠΌ ΡΠ΅Π»Π΅ΡΠΎΠ½Π΅ Samsung S6 Edge ΠΏΠΎΠ΄ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ Android 7. Π― ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Ρ, ΡΡΠΎ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ Π³ΠΎΠ½ΠΊΠΈ, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΡΡΠ΅Π±ΡΠ΅Ρ Π±ΠΎΠ»Π΅Π΅ Π±ΡΡΡΡΠΎΠ³ΠΎ ΡΡΡΡΠΎΠΉΡΡΠ²Π°, ΡΡΠΎΠ±Ρ ΡΠΏΡΠΎΠ²ΠΎΡΠΈΡΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ.
- ΠΡΠΎΠΊΡΡΡΠΊΠ° Π²Π²ΠΎΠ΄Π° ΡΠ΅ΠΊΡΡΠ° Π½Π΅ ΠΈΠΌΠ΅Π»Π° Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, ΠΈ Ρ ΠΌΠΎΠ³ Π»Π΅Π³ΠΊΠΎ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, Π΄Π°ΠΆΠ΅ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ScrollView.
- ΠΠ²ΠΎΠ΄ΠΈΡΡ ΡΠ΅ΠΊΡΡ Π½Π΅ Π±ΡΠ»ΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ. ΠΡΠΎΡΡΠΎΠ³ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΠΎΠΊΡΡΠ° Π±ΡΠ»ΠΎ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ, ΡΡΠΎΠ±Ρ Π²ΡΠ·Π²Π°ΡΡ ΡΠ±ΠΎΠΉ.
- ΠΠ΅ ΠΈΠΌΠ΅Π»ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, ΠΊΠ°ΠΊΠΎΠΉ ΡΠ²Π΅Ρ Π²Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΠ»ΠΈ Π΄Π»Ρ ΠΏΠΎΠ΄ΡΠ΅ΡΠΊΠΈΠ²Π°Π½ΠΈΡ, Π΄Π°ΠΆΠ΅
undefined
Π²ΡΠ·Π²Π°Π» ΡΠ±ΠΎΠΉ, Π½ΠΎ Π²Ρ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΎΠΆΠΈΠ΄Π°Π»ΠΈ, ΡΡΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ RN ΡΠ΅ΠΏΠ΅ΡΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ Π΅Π³ΠΎ Π½Π° Β«ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΡΠΉΒ»- ΠΠ°Π»ΠΈΡΠΈΠ΅ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΡΠ΅ΠΊΡΡΠΎΠ²ΡΡ Π²Ρ ΠΎΠ΄ΠΎΠ², ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅ΠΌΡΡ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ, ΠΈΠΌΠ΅Π»ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΠ±ΠΎΠΉ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΠ» Π±ΡΡΡΡΠ΅Π΅ ΠΏΡΠΈ 100, ΡΠ΅ΠΌ Π²ΡΠ΅Π³ΠΎ 10 Π½Π° ΡΠΊΡΠ°Π½Π΅.
- Π― Π½Π΅ ΠΌΠΎΠ³ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ ΡΠ±ΠΎΠΉ Ρ ΠΏΠΎΠΌΠΎΡΡΡ
displayForMs: 0
ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Ρ, ΡΡΠΎ ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° TextInputs Π±ΡΠ»ΠΈ ΡΠΎΠ·Π΄Π°Π½Ρ ΡΠΎΠ»ΡΠΊΠΎ Π½Π΅Π΄Π°Π²Π½ΠΎ.ΠΡΠ»ΠΈ Π²Ρ Π½Π΅ Ρ ΠΎΡΠΈΡΠ΅ Π·Π°Π²ΠΈΡΠ°ΡΡ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π·Π°ΠΏΠΈΡΠ°ΡΡ Π²ΡΠ²ΠΎΠ΄
adb logcat
ΠΈ Π½Π°ΠΉΡΠΈ ΠΊΠΎΠ½ΡΠΎΠ»ΡΠ½ΡΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ, ΡΠΎΠ·Π΄Π°Π²Π°Π΅ΠΌΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠΌ, ΠΈ ΠΎΡΡΠ΅Ρ ΠΎ ΡΠ±ΠΎΡΡ .ΠΠΎΡ ΠΌΠΎΠΉ ΡΠ΅ΡΡΠΎΠ²ΡΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ, Π΅ΡΠ»ΠΈ Π²Ρ Π·Π°Ρ ΠΎΡΠΈΡΠ΅ Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ. ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΡΠ΅ΡΡΠ° Π½Π°ΡΡΡΠΎΠ΅Π½Ρ ΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ Π²ΡΠ·ΡΠ²Π°ΡΡ ΡΠ±ΠΎΠΉ, ΠΊΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ, ΠΌΠ΅Π½Π΅Π΅ ΡΠ΅ΠΌ Π·Π° 30 ΡΠ΅ΠΊΡΠ½Π΄.
/** * A test component to reproduce the crash reported at * https://github.com/facebook/react-native/issues/17530 */ import * as React from "react"; import { View, ScrollView, TextInput, Text, StyleSheet } from "react-native"; // These are the test parameters const params = { underlineColors: ["red", undefined, "transparent", "rgba(0, 0, 0, 0)"], // The colors to test numberOfInputs: 100, // How many TextInput to render at a time focusIntervalMs: 200, // How often to change focus between them displayForMs: 3000, // How long to display them (set to 0 for indefinite) delayDisplayForMs: 10, // How long to delay between displays withScrollView: false // Whether to use a ScrollView }; const testText = index => `Testing underlineColor = ${params.underlineColors[index] || "undefined"}`; class AndroidTextInputTest extends React.Component{ state = { underlineColorIndex: 0, showInputs: true, startKey: 0 }; mounted = false; focusInterval = undefined; textInputRefs = undefined; focussedInputIndex = 0; componentDidMount() { console.log(`Testing with params = `, JSON.stringify(params)); this.mounted = true; setTimeout(this._showInputs, params.delayDisplayForMs); setInterval(this._focusAnInput, params.focusIntervalMs); } componentWillUnmount() { clearInterval(this.focusInterval); this.mounted = false; } _focusAnInput = () => { if (this.mounted && this.textInputRefs) { if (this.focussedInputIndex >= this.textInputRefs.length) { this.focussedInputIndex = 0; } const textInputRef = this.textInputRefs[this.focussedInputIndex]; const textInput = this.refs[textInputRef]; if (textInput) { this.focussedInputIndex++; this.refs[textInputRef].focus(); } } }; _showInputs = () => { if (this.mounted) { console.log(testText(this.state.underlineColorIndex)); this.setState({ showInputs: true }); if (params.displayForMs) { setTimeout(this._unshowInputs, params.displayForMs); } } }; _unshowInputs = () => { this.focussedInputIndex = 0; this.textInputRefs = undefined; if (this.mounted) { let next = this.state.underlineColorIndex + 1; if (next === params.underlineColors.length) { next = 0; } this.setState({ underlineColorIndex: next, showInputs: false, startKey: this.state.startKey + params.numberOfInputs }); setTimeout(this._showInputs, params.delayDisplayForMs); } }; render() { const textInputs = []; const { underlineColorIndex } = this.state; const underlineColor = params.underlineColors[underlineColorIndex]; const refs = []; if (this.state.showInputs) { for (let i = 0; i < params.numberOfInputs; i++) { const key = this.state.startKey + i + ""; refs.push(key); textInputs.push( <TextInput ref={key} key={key} placeholder={key} underlineColorAndroid={underlineColor} style={styles.textInput} /> ); } if (!this.textInputRefs) { this.textInputRefs = refs; } } return ( <View style={styles.mainView}> <Text>{testText(underlineColorIndex)}</Text> {params.withScrollView ? ( <React.Fragment> <Text>With ScrollView</Text> <ScrollView>{textInputs}</ScrollView> </React.Fragment> ) : ( <React.Fragment>{textInputs}</React.Fragment> )} </View> ); } } const styles = StyleSheet.create({ mainView: { flex: 1, alignItems: "center" }, textInput: { backgroundColor: "white", margin: 5, width: 300 } }); export default AndroidTextInputTest;
ΠΡΠΎΠ±ΠΎΠ²Π°Π», Π½ΠΎ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΠ° Π½Π΅ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π»Π°ΡΡ Π² TextInputs. ΠΠ°ΠΊΠΈΠ΅-Π½ΠΈΠ±ΡΠ΄Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ?
Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ, ΡΡΠΎ ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°Π»ΠΈ ΠΌΠΎΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ @saketkumar.
Π― Π½Π΅ ΠΌΠΎΠ³Ρ Π²ΡΠΏΠΎΠΌΠ½ΠΈΡΡ, Π΄ΠΎΠ»ΠΆΠ½Π° Π»ΠΈ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΠ° ΠΏΠΎΡΠ²Π»ΡΡΡΡΡ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΡΠ΅ΡΡΠ°, Ρ ΠΎΡΡ Ρ ΠΎΠΆΠΈΠ΄Π°Π», ΡΡΠΎ ΠΎΠ½Π° ΠΏΠΎΡΠ²ΠΈΡΡΡ, ΠΊΠΎΠ³Π΄Π° Π²Π²ΠΎΠ΄ ΡΠ΅ΠΊΡΡΠ° ΡΡΠΎΠΊΡΡΠΈΡΠΎΠ²Π°Π½. ΠΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ ΡΠ΅Π°Π»ΡΠ½ΠΎΠ΅ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ ΠΈΠ»ΠΈ ΡΠΌΡΠ»ΡΡΠΎΡ?
ΠΡ ΠΌΠΎΠ³Π»ΠΈ Π²ΠΈΠ΄Π΅ΡΡ ΠΊΡΡΡΠΎΡ, ΠΏΠΎΡΠ²Π»ΡΡΡΠΈΠΉΡΡ Π² ΡΠ΅ΠΊΡΡΠΎΠ²ΡΡ ΠΏΠΎΠ»ΡΡ , ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ΠΈ Π±ΡΠ»ΠΈ ΡΡΠΎΠΊΡΡΠΈΡΠΎΠ²Π°Π½Ρ, ΠΈ ΡΠΌΠΎΠ³ Π»ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ Π΄Π»Ρ Π²Π°Ρ ΡΠ±ΠΎΠΉ?
Π’Π°ΠΊΠΎΠΉ ΠΆΠ΅
ΠΡΡΡΠ΅ΡΠ°Π΅ΡΡΡ Π² React 0.59 Π½Π° ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΡΠ΅Π»Π΅ΡΠΎΠ½Π°Ρ Android.
ΠΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ ΡΠ»ΡΡΠ°ΠΉΠ½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ Π² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°Ρ
Ρ TextInput
Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΠΌΠΈ Π² Flatlist
ΠΡΡΠ°Π»ΡΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π°ΡΡΠΈΠ±ΡΡ underlineColorAndroid={null}
Π΄Π»Ρ TextInput
ΠΊΠ°ΠΊ ΠΎΠ±ΡΡΠΆΠ΄Π°Π»ΠΎΡΡ Π² ΡΡΠΎΠΌ ΠΏΠΎΡΠΎΠΊΠ΅, Π½ΠΎ ΠΎΡΠΈΠ±ΠΊΠ° ΡΠΎΡ
ΡΠ°Π½ΡΠ΅ΡΡΡ
ΠΠ½Π΅ ΠΏΡΠΈΡΠ»ΠΎΡΡ ΠΏΠ΅ΡΠ΅Π·Π°Π³ΡΡΠ·ΠΈΡΡ ΡΠ΅Π»Π΅ΡΠΎΠ½ ΠΈ ΠΏΠ΅ΡΠ΅ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ EXPO, ΡΡΠΎΠ±Ρ ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ ΡΡΠΎ. ΠΡΠ»ΠΈ ΡΡΠΎ Π½Π΅ ΡΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π΄Π»Ρ Π²Π°Ρ, Ρ Π±Ρ ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°Π» ΠΎΡΠΈΡΡΠΈΡΡ Π²Π°Ρ ΠΊΠ΅Ρ ΠΈ ΠΎΡΠΈΡΡΠΈΡΡ ΠΊΠ΅Ρ ΡΠ°ΠΌΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ EXPO.
ΠΠΎΠ½ΡΡΠΈΡ Π½Π΅ ΠΈΠΌΠ΅Ρ, ΠΊΠ°ΠΊ Π²ΠΎΠΎΠ±ΡΠ΅ ΠΏΡΠΎΠΈΠ·ΠΎΡΠ»Π° ΡΡΠ° ΠΠ¨ΠΠΠΠ. Π― Π½Π΅ ΠΌΠΎΠ³ Π½ΠΈ Π²ΠΎΡΡΠΎΠ·Π΄Π°ΡΡ ΡΡΠΎ, Π½ΠΈ ΠΏΡΠΈΠ΄ΡΠΌΠ°ΡΡ, ΠΊΠ°ΠΊ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠΈΡΡ ΡΡΠΎ ΡΠ½ΠΎΠ²Π°.
ΠΡΠΎ ΠΏΡΠΎΡΡΠΎ Π½Π°ΡΠ°Π»ΠΎΡΡ, ΠΈ ΡΡΠΎ Π±Ρ Ρ Π½ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ» Π² ΡΠ²ΠΎΠ΅ΠΌ ΠΊΠΎΠ΄Π΅, ΡΡΠΎ Π½Π΅ ΠΈΡΠΏΡΠ°Π²ΠΈΠ»ΠΎ. ΠΡΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Ρ EXPO APP, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Ρ Π²ΠΈΠΆΡ ΠΠ¨ΠΠΠΠ£ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ, Π½ΠΎ Π½Π΅ Π½Π° ΠΌΠΎΠ΅ΠΉ ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ ΠΈΠ»ΠΈ Π³Π΄Π΅-Π»ΠΈΠ±ΠΎ Π΅ΡΠ΅.
+1 ΠΡΠΈΠ±ΠΊΠ° Π²ΡΠ΅ Π΅ΡΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π² RN 0.59.9. ΡΠΎΠΎΠ±ΡΠ°Π΅ΡΡΡ ΠΈΠ· firebase crashlytics
ΠΏΠ΅ΡΠ²ΡΠΌ, ΠΊΡΠΎ ΠΏΠΎΠ»ΡΡΠΈΡ ΡΡΡ ΠΎΡΠΈΠ±ΠΊΡ Π½Π° RN 0.61?
ΠΠΎΠ»ΡΡΠΈΠ² ΡΡ ΠΆΠ΅ ΠΎΡΠΈΠ±ΠΊΡ Π² RN 0.61, ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ @diegotsi ΠΈΡΠΏΡΠ°Π²ΠΈΠ»ΠΎ Π΅Π΅.
ΠΡΠΎ ΡΠ΅ΡΡΠ΅Π·Π½Π°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΠ½Π° Π²ΠΏΠ΅ΡΠ²ΡΠ΅ ΡΠ»ΡΡΠΈΠ»Π°ΡΡ ΡΠΎ ΠΌΠ½ΠΎΠΉ Π½Π° ΡΡΠ°ΠΏΠ΅ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΊΠΈ ΠΊ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Ρ, ΠΈ Ρ Π±Ρ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΡΠΌΠΎΠ³ ΠΎΡΡΠ»Π΅Π΄ΠΈΡΡ Π΅Π΅ Π±Π΅Π· ΡΠ±ΠΎΠ΅Π², ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π½Π΅ΡΡΡΠΎΠΉΡΠΈΠ²ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π·Π°ΡΡΡΠ΄Π½ΡΠ΅Ρ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅.
ΠΡΠΎ ΠΎΡΡΠ΅Ρ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅?
Π΄Π°
ΠΡ ΡΠΈΡΠ°Π»ΠΈ ΠΡΠ°Π²ΠΈΠ»Π° ΡΡΠ°ΡΡΠΈΡ ?
Π΄Π°, ΠΌΠ½Π΅ ΠΎΡΠ΅Π½Ρ ΠΆΠ°Π»Ρ, ΡΡΠΎ Ρ Π½Π΅ ΠΌΠΎΠ³Ρ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎΠ± ΡΡΠΎΠΌ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΈ, ΠΊΡΠΎΠΌΠ΅ ΡΡΠ°ΡΡΠΈΡΠΎΠ²ΠΊΠΈ ΡΡΠ΅ΠΊΠ°, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΎΡΡΠ΅Ρ ΠΎ ΡΠ±ΠΎΠ΅ Π±ΡΠ» ΡΠΎΠ±ΡΠ°Π½ ΠΈΠ· Google Analytics, Ρ Π½Π΅ Π·Π½Π°Ρ, ΡΡΠΎΠ±Ρ ΡΠ½ΠΎΠ²Π° ΠΏΠΎΡΠ²ΠΈΠ»ΠΎΡΡ ΡΡΠΎ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅.
ΠΠΊΡΡΠΆΠ°ΡΡΠ°Ρ ΠΎΠ±ΡΡΠ°Π½ΠΎΠ²ΠΊΠ°
ΠΠΊΡΡΠΆΠ°ΡΡΠ°Ρ ΠΎΠ±ΡΡΠ°Π½ΠΎΠ²ΠΊΠ°:
ΠΠ‘: macOS Sierra 10.12.6
Π£Π·Π΅Π»: 8.4.0
ΠΡΡΠΆΠ°: 0,27,5
npm: 5.4.0
Android Studio: 3.0ΠΠ°ΠΊΠ΅ΡΡ: (Ρ ΠΎΡΠ΅Π» => ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½)
ΡΠ΅Π°Π³ΠΈΡΠΎΠ²Π°ΡΡ-ΡΠΎΠ΄Π½ΠΎΠΉ: 0.51.0 => 0.51.0
ΡΠ΅Π°Π³ΠΈΡΠΎΠ²Π°ΡΡ: 16.0.0-alpha.12 => 16.0.0-alpha.12Π¦Π΅Π»Π΅Π²Π°Ρ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°: Android (7.1.1)
ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΡΠΉ: MIX 2
Π°Π½Π΄ΡΠΎΠΈΠ΄: 7.1.1
java.lang.NullPointerException:
ΡΠΎΠ±Π»Π°Π·Π½ Π²ΡΠ·Π²Π°ΡΡ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ android.graphics.drawable.Drawable android.graphics.drawable.Drawable $ ConstantState.newDrawable (android.content.res.Resources) Π΄Π»Ρ ΡΡΡΠ»ΠΊΠΈ Π½Π° Π½ΡΠ»Π΅Π²ΠΎΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ Π²
android.graphics.drawable.DrawableContainer $ DrawableContainerState.getChild (DrawableContainer.java:888) Π²
android.graphics.drawable.DrawableContainer.selectDrawable (DrawableContainer.java:466) Π²
android.graphics.drawable.StateListDrawable.onStateChange (StateListDrawable.java:104) Π²
android.graphics.drawable.Drawable.setState (Drawable.java:735) Π²
android.graphics.drawable.DrawableWrapper.onStateChange (DrawableWrapper.java:331) Π²
android.graphics.drawable.Drawable.setState (Drawable.java:735) Π²
android.graphics.drawable.LayerDrawable.onStateChange (LayerDrawable.java:1488) Π²
android.graphics.drawable.Drawable.setState (Drawable.java:735) Π²
android.view.View.drawableStateChanged (View.java:18002) Π²
android.widget.TextView.drawableStateChanged (TextView.java:4097) Π²
android.view.View.refreshDrawableState (View.java:18071) Π²
android.view.View.setPressed (View.java:8543) Π²
android.view.View.setPressed (View.java:8521) Π²
android.view.View.onTouchEvent (View.java:11218) Π²
android.widget.TextView.onTouchEvent (TextView.java:8467) Π²
com.facebook.react.views.textinput.ReactEditText.onTouchEvent (ReactEditText.java:150)
ΠΡΠΎ ΠΎΡΡΠ΅Ρ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅?
Π΄Π°
ΠΡ ΡΠΈΡΠ°Π»ΠΈ ΠΡΠ°Π²ΠΈΠ»Π° ΡΡΠ°ΡΡΠΈΡ ?
Π΄Π°, ΠΌΠ½Π΅ ΠΎΡΠ΅Π½Ρ ΠΆΠ°Π»Ρ, ΡΡΠΎ Ρ Π½Π΅ ΠΌΠΎΠ³Ρ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎΠ± ΡΡΠΎΠΌ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΈ, ΠΊΡΠΎΠΌΠ΅ ΡΡΠ°ΡΡΠΈΡΠΎΠ²ΠΊΠΈ ΡΡΠ΅ΠΊΠ°, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΎΡΡΠ΅Ρ ΠΎ ΡΠ±ΠΎΠ΅ Π±ΡΠ» ΡΠΎΠ±ΡΠ°Π½ ΠΈΠ· Google Analytics, Ρ Π½Π΅ Π·Π½Π°Ρ, ΡΡΠΎΠ±Ρ ΡΠ½ΠΎΠ²Π° ΠΏΠΎΡΠ²ΠΈΠ»ΠΎΡΡ ΡΡΠΎ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅.
ΠΠΊΡΡΠΆΠ°ΡΡΠ°Ρ ΠΎΠ±ΡΡΠ°Π½ΠΎΠ²ΠΊΠ°
ΠΠΊΡΡΠΆΠ°ΡΡΠ°Ρ ΠΎΠ±ΡΡΠ°Π½ΠΎΠ²ΠΊΠ°:
ΠΠ‘: macOS Sierra 10.12.6
Π£Π·Π΅Π»: 8.4.0
ΠΡΡΠΆΠ°: 0,27,5
npm: 5.4.0
Android Studio: 3.0ΠΠ°ΠΊΠ΅ΡΡ: (Ρ ΠΎΡΠ΅Π» => ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½)
ΡΠ΅Π°Π³ΠΈΡΠΎΠ²Π°ΡΡ-ΡΠΎΠ΄Π½ΠΎΠΉ: 0.51.0 => 0.51.0
ΡΠ΅Π°Π³ΠΈΡΠΎΠ²Π°ΡΡ: 16.0.0-alpha.12 => 16.0.0-alpha.12Π¦Π΅Π»Π΅Π²Π°Ρ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°: Android (7.1.1)
ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΡΠΉ: MIX 2
Π°Π½Π΄ΡΠΎΠΈΠ΄: 7.1.1
java.lang.NullPointerException:
ΡΠΎΠ±Π»Π°Π·Π½ Π²ΡΠ·Π²Π°ΡΡ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ android.graphics.drawable.Drawable android.graphics.drawable.Drawable $ ConstantState.newDrawable (android.content.res.Resources) Π΄Π»Ρ ΡΡΡΠ»ΠΊΠΈ Π½Π° Π½ΡΠ»Π΅Π²ΠΎΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ Π²
android.graphics.drawable.DrawableContainer $ DrawableContainerState.getChild (DrawableContainer.java:888) Π²
android.graphics.drawable.DrawableContainer.selectDrawable (DrawableContainer.java:466) Π²
android.graphics.drawable.StateListDrawable.onStateChange (StateListDrawable.java:104) Π²
android.graphics.drawable.Drawable.setState (Drawable.java:735) Π²
android.graphics.drawable.DrawableWrapper.onStateChange (DrawableWrapper.java:331) Π²
android.graphics.drawable.Drawable.setState (Drawable.java:735) Π²
android.graphics.drawable.LayerDrawable.onStateChange (LayerDrawable.java:1488) Π²
android.graphics.drawable.Drawable.setState (Drawable.java:735) Π²
android.view.View.drawableStateChanged (View.java:18002) Π²
android.widget.TextView.drawableStateChanged (TextView.java:4097) Π²
android.view.View.refreshDrawableState (View.java:18071) Π²
android.view.View.setPressed (View.java:8543) Π²
android.view.View.setPressed (View.java:8521) Π²
android.view.View.onTouchEvent (View.java:11218) Π²
android.widget.TextView.onTouchEvent (TextView.java:8467) Π²
com.facebook.react.views.textinput.ReactEditText.onTouchEvent (ReactEditText.java:150)
ΠΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ, ΠΊΠΎΠ³Π΄Π° Ρ ΠΌΠ΅Π½ΡΡ ΡΡΠΎ-ΡΠΎ Π² ΡΡΠΈΠ»Π΅, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΡΠ΄Π°Π»ΡΡ justifyContent ΠΈΠ»ΠΈ ΡΡΠΎ-ΡΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ΅, ΠΈ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΡΡΠΊΠ°Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.
@cinocai , @Sargnec et al, ΡΡΠ° Π²Π΅ΡΠΊΠ° ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅Π² ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π½Π°ΡΡΠΎΠ»ΡΠΊΠΎ Π΄Π»ΠΈΠ½Π½ΠΎΠΉ, ΡΡΠΎ Ρ Π΄ΡΠΌΠ°Ρ, ΡΡΠΎ Π»ΡΠ΄ΡΠΌ Π½Π΅ Ρ Π²Π°ΡΠ°Π΅Ρ ΡΠ΅ΡΡΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ Ρ ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π» Π²ΡΡΠ΅
ΠΠ΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊ Π²ΡΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ Π΅Π³ΠΎ Π΄Π»Ρ ΡΡΠΏΠ΅ΡΠ½ΠΎΠ³ΠΎ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΡ ΡΡΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΡΠ΅ΡΠ΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΡΠ°ΠΊΠΆΠ΅ ΡΠΏΠΎΠΌΠΈΠ½Π°Π΅ΡΡΡ Π² ΡΡΠΎΠΌ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ.
@ glenn-axsy: ΠΡΠ»ΠΈΡΠ½Π°Ρ ΡΠ°Π±ΠΎΡΠ° Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠΌ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΎΡΠ΅Π½Ρ ΠΏΠΎΠΌΠΎΠ³Π»ΠΎ Π»ΡΡΡΠ΅ ΠΏΠΎΠ½ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ.
ΠΠΎ Ρ ΠΈΠ·ΠΎ Π²ΡΠ΅Ρ
ΡΠΈΠ» ΠΏΡΡΠ°ΡΡΡ Π½Π°ΠΉΡΠΈ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅.
ΠΠ°ΠΊ Π²Ρ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠΈΠ»ΠΈ ΠΏΡΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ΅ displayForMs: 0
, ΡΠ±ΠΎΠΉ Π½Π΅ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ. ΠΡΠ»ΠΈ Ρ Π½Π΅ ΠΎΡΠΈΠ±Π°ΡΡΡ, ΠΏΡΠΈ ΡΡΠΎΠΌ 100
TextInputs Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΎΡΠΊΠ»ΡΡΠ°Π΅ΡΡΡ (ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ), Π½ΠΈ Π½ΠΎΠ²ΡΡ
ΡΠΎΠΆΠ΅.
Π― ΠΏΠΎΠΏΡΡΠ°Π»ΡΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΡΠ°ΠΌ displayForMs: 3000
ΠΈ ΡΠ΄Π΅Π»Π°Π» Π΅ΡΠ΅ 2 ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΎΡ
ΡΠ°Π½ΠΈΠ»ΠΈ Π²ΡΠ΅ 100
ΡΠΌΠΎΠ½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌΠΈ (ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅) Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΠΎΠΌ ΡΠΎΡΡΠΎΡΠ½ΠΈΠΈ.
ΠΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ
${i}
;if (this.state.showInputs) {
Π²Π½ΡΡΡΠΈ ΡΠ΅Π½Π΄Π΅ΡΠ°.ΠΊΠΎΠ΄
/**
* A test component to reproduce the crash reported at
* https://github.com/facebook/react-native/issues/17530
*/
import * as React from 'react';
import { View, ScrollView, TextInput, Text, StyleSheet } from 'react-native';
// These are the test parameters
const params = {
underlineColors: ['red', undefined, 'transparent', 'rgba(0, 0, 0, 0)'], // The colors to test
numberOfInputs: 100, // How many TextInput to render at a time
focusIntervalMs: 200, // How often to change focus between them
displayForMs: 3000, // How long to display them (set to 0 for indefinite)
delayDisplayForMs: 10, // How long to delay between displays
withScrollView: false, // Whether to use a ScrollView
};
const testText = index =>
`Testing underlineColor = ${params.underlineColors[index] || 'undefined'}`;
class AndroidTextInputTest extends React.Component {
state = {
underlineColorIndex: 0,
showInputs: true,
startKey: 0,
};
mounted = false;
focusInterval = undefined;
textInputRefs = undefined;
focussedInputIndex = 0;
componentDidMount() {
console.log('Testing with params = ', JSON.stringify(params));
this.mounted = true;
setTimeout(this._showInputs, params.delayDisplayForMs);
setInterval(this._focusAnInput, params.focusIntervalMs);
}
componentWillUnmount() {
clearInterval(this.focusInterval);
this.mounted = false;
}
_focusAnInput = () => {
if (this.mounted && this.textInputRefs) {
if (this.focussedInputIndex >= this.textInputRefs.length) {
this.focussedInputIndex = 0;
}
const textInputRef = this.textInputRefs[this.focussedInputIndex];
const textInput = this.refs[textInputRef];
if (textInput) {
this.focussedInputIndex++;
this.refs[textInputRef].focus();
}
}
};
_showInputs = () => {
if (this.mounted) {
console.log(testText(this.state.underlineColorIndex));
this.setState({ showInputs: true });
if (params.displayForMs) {
setTimeout(this._unshowInputs, params.displayForMs);
}
}
};
_unshowInputs = () => {
this.focussedInputIndex = 0;
this.textInputRefs = undefined;
if (this.mounted) {
let next = this.state.underlineColorIndex + 1;
if (next === params.underlineColors.length) {
next = 0;
}
this.setState({
underlineColorIndex: next,
showInputs: false,
startKey: this.state.startKey + params.numberOfInputs,
});
setTimeout(this._showInputs, params.delayDisplayForMs);
}
};
render() {
const textInputs = [];
const { underlineColorIndex } = this.state;
const underlineColor = params.underlineColors[underlineColorIndex];
const refs = [];
// CHANGE 2
// if (this.state.showInputs) {
for (let i = 0; i < params.numberOfInputs; i++) {
const key = `${i}`; // CHANGE 1
refs.push(key);
textInputs.push(
<textinput i="23"/>
);
}
if (!this.textInputRefs) {
this.textInputRefs = refs;
}
// }
return (
<view i="24">
<text i="25">{testText(underlineColorIndex)}</text>
{params.withScrollView ? (
<react.fragment i="26">
<text i="27">With ScrollView</text>
<scrollview i="28">{textInputs}</scrollview>
</react.fragment>
) : (
<react.fragment i="29">{textInputs}</react.fragment>
)}
</view>
);
}
}
const styles = StyleSheet.create({
mainView: {
flex: 1,
alignItems: 'center',
},
textInput: {
backgroundColor: 'white',
margin: 5,
width: 300,
},
});
export default AndroidTextInputTest;
ΠΠ±Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΠ΄Π΅Π»Π°Π»ΠΈ ΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ Π²ΡΠ·ΠΎΠ² _showInputs
ΠΈ _unshowInputs
Π½Π΅ ΠΏΠ΅ΡΠ΅ΠΌΠΎΠ½ΡΠΈΡΠΎΠ²Π°Π» TextInputs ΠΈ Π½Π΅ ΠΌΠΎΠ½ΡΠΈΡΠΎΠ²Π°Π» Π½ΠΎΠ²ΡΠ΅ (ΠΌΠ°ΠΊΡΠΈΠΌΡΠΌ 100).
Π ΠΎΠ½ Π½Π΅ Π²ΡΠ»Π΅ΡΠ°Π΅Ρ, ΠΊΠ°ΠΊ ΠΎΠΆΠΈΠ΄Π°Π»ΠΎΡΡ.
ΠΠ°ΠΊΠΎΠ½Π΅Ρ, ΡΡΠΎΠ±Ρ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ, Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π»ΠΈ ΡΡΠΎ ΠΏΠ΅ΡΠ΅ΠΌΠΎΠ½ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ (Π±ΠΎΠ»ΡΡΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ TextInput), ΠΊΠΎΡΠΎΡΠΎΠ΅ Π²ΡΠ·ΡΠ²Π°Π΅Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ. Π― ΠΏΠΎΠΏΡΡΠ°Π»ΡΡ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ ΡΡΠΎ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ, Π½Π°Π΄ ΠΊΠΎΡΠΎΡΡΠΌ ΡΠ°Π±ΠΎΡΠ°Ρ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΡΠΎΠΎΠ±ΡΠ°Π»ΠΎΡΡ ΠΎ ΡΠ±ΠΎΠ΅.
Π ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Π΅ΡΡΡ 2 ΡΠΊΡΠ°Π½Π°, ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ ΠΈΠΌΠ΅Π΅Ρ 2 TextInputs, Π° Π΄ΡΡΠ³ΠΎΠΉ - 4, Ρ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Π» ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ°ΡΡΡΡ Π²ΠΏΠ΅ΡΠ΅Π΄ ΠΈ Π½Π°Π·Π°Π΄ ΠΏΠΎ ΡΠΊΡΠ°Π½Π°ΠΌ, ΡΡΠΎ, ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ, ΠΏΠ΅ΡΠ΅ΠΌΠΎΠ½ΡΠΈΡΠΎΠ²Π°Π»ΠΎ Π²ΡΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΡΠΊΡΠ°Π½Π°, ΠΈ, Π² ΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠΌ ΠΈΡΠΎΠ³Π΅, ΡΠ΅ΡΠ΅Π· Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ΅ Π²ΡΠ΅ΠΌΡ Ρ ΡΠΌΠΎΠ³ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠ±ΠΎΠΉ.
ΠΠ· ΡΡΠΎΠ³ΠΎ Ρ ΠΌΠΎΠ³ ΡΠ΄Π΅Π»Π°ΡΡ Π²ΡΠ²ΠΎΠ΄, ΡΡΠΎ Π·Π°ΠΏΡΠ΅Ρ Π½Π° ΠΎΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ TextInput
Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΆΠΈΠ·Π½Π΅ΡΠΏΠΎΡΠΎΠ±Π½ΡΠΌ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ. ΠΠΎ Π΄ΠΎ ΡΠΈΡ
ΠΏΠΎΡ Π½Π΅ Π·Π½Π°Ρ, ΡΡΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ Π²ΡΠ·ΡΠ²Π°Π΅Ρ ΡΡΠΎ!
ΠΠΠΠΠ’ΠΠ
underlineColorAndroid
, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Ρ ΠΏΡΡΠ°Π»ΡΡ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ Π΅Π³ΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ <item name="android:editTextBackground"><strong i="18">@android</strong>:color/transparent</item>
, ΠΈ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ ΡΠ°Π·Π½ΠΈΡΡ.ScrollView
.TextInput
ΡΠ°ΠΊΠΆΠ΅ Π½Π΅ Π±ΡΠ»Π° ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎΠΉ Π΄Π»Ρ ΡΠ±ΠΎΡ, ΠΏΡΠΎΡΡΠΎ ΠΏΠ΅ΡΠ΅ΠΌΠΎΠ½ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΠΈΡ
100
TextInputs ΠΏΡΠΈΠ²Π΅Π»ΠΎ ΠΊ ΡΠ±ΠΎΡ.ΠΠ»Π°Π³ΠΎΠ΄Π°ΡΡ!
@rimzici ΠΠ°, ΡΡΠΎ ΠΏΡΠ°Π²Π΄Π°. Π‘Π±ΠΎΠΉ ΡΠ²ΡΠ·Π°Π½ Ρ ΠΏΠ΅ΡΠ΅ΠΌΠΎΠ½ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ / ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ΠΌ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° edittext, ΠΈΠ½ΠΎΠ³Π΄Π° ΡΠΎΠ½ΠΎΠ²ΡΠ΅ ΡΠ΅ΡΡΠ΅ΠΆΠΈ ΡΠ°Π²Π½Ρ Π½ΡΠ»Ρ. ΠΠΎ ΠΊΠ°ΠΊ Π½ΠΈ ΡΡΡΠ°Π½Π½ΠΎ, ΠΊΠΎΠ³Π΄Π° Π²Ρ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΡΠ΅ <item name="android:editTextBackground"><strong i="6">@android</strong>:color/transparent</item>
ΡΡΠΎΠ³ΠΎ Π½Π΅ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ. ΠΠ°ΠΆΠ΅ΡΡΡ, ΡΡΠΎ ΡΠ΅ΡΡΠ΅ΠΆΠΈ ΠΊΠ°ΠΊΠΈΠΌ-ΡΠΎ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ Π±ΡΠ»ΠΈ ΠΏΠ΅ΡΠ΅ΡΠ°Π±ΠΎΡΠ°Π½Ρ ΠΏΠΎΡΠ»Π΅ ΠΊΠ»ΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΈ ΠΏΡΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ΅ ΡΠΎΠ½Π° ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ ΠΈΠΌΠ΅ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ?
Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ @rimzici.
ΠΡΠΈΡΠΊΠΎΡΠ±Π½ΠΎ ΡΠ»ΡΡΠ°ΡΡ, ΡΡΠΎ ΠΏΡΠΎΡΡΠ°Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° <item name="android:editTextBackground"><strong i="6">@android</strong>:color/transparent</item>
Π½Π΅ ΡΠ΅ΡΠΈΠ»Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ. ΠΠΎ ΠΊΡΠ°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅ΡΠ΅, ΡΠ΅ΠΏΠ΅ΡΡ Ρ Π²Π°Ρ Π΅ΡΡΡ ΡΠΏΠΎΡΠΎΠ± Π»Π΅Π³ΠΊΠΎ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ ΠΎΡΠΈΠ±ΠΊΡ ΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ Π΅ΡΠ΅ ΠΊΠΎΠ΅-ΡΡΠΎ.
ΠΠΎΠΆΠ°Π»ΡΠΉΡΡΠ°, ΠΎΠΏΡΠ±Π»ΠΈΠΊΡΠΉΡΠ΅ Π»ΡΠ±ΡΠ΅ Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠΈΠ΅ Π½Π°Π±Π»ΡΠ΄Π΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ Ρ Π²Π°Ρ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡΡΡ.
Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ @sunnylqm ΠΈ @ glenn-axsy! ΠΡ ΠΏΡΠ°Π²Ρ, ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° <item name="android:editTextBackground"><strong i="6">@android</strong>:color/transparent</item>
Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΈΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ.
Π― Π·Π°Π±ΡΠ», ΡΡΠΎ Π² ΠΌΠΎΠ΅ΠΌ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΈ Π±ΡΠ»Π° ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π° ββΡΠ΅ΠΌΠ° Π·Π°ΡΡΠ°Π²ΠΊΠΈ, ΠΊΠΎΡΠΎΡΠ°Ρ Π·Π°ΠΊΡΡΠ²Π°Π»Π° Π±Π΅Π»ΡΠΉ ΡΠΊΡΠ°Π½ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π·Π°Π³ΡΡΠ·ΠΊΠΈ JS.
Π’Π΅ΠΏΠ΅ΡΡ Ρ ΠΌΠΎΠ³Ρ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠ΄ΠΈΡΡ, ΡΡΠΎ ΠΎΠ±Ρ ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡΡΡ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π΅Π½ Π΄Π»Ρ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠ΅Π½ΠΈΡ ΡΠ±ΠΎΠ΅Π².
ΠΡΠ΄Ρ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡΡ Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠ΅ΠΉ.
react-native 0.61.5 <- ΡΠΎΠΆΠ΅ Π·Π΄Π΅ΡΡ!
react-native 0.62.0.rc-1 <- ΡΠΎΠΆΠ΅ Π·Π΄Π΅ΡΡ!
Π’Π° ΠΆΠ΅ ΠΎΡΠΈΠ±ΠΊΠ° Π½Π° [email protected]
ΠΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΏΠΎΠ²ΡΠΎΡΠ΅Π½ΠΈΠΉ ΠΎΠ΄Π½ΠΎΠΉ ΠΈ ΡΠΎΠΉ ΠΆΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ, ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½Π½ΠΎΠΉ Sentry: https://sentry.io/share/issue/ac1e7c55f1594b118f0faaf8d11de5c4/
ΠΠΎ Π Π 0.59.9
Π’Π° ΠΆΠ΅ ΠΎΡΠΈΠ±ΠΊΠ° Π½Π° RN 0.55.4
Π’Π° ΠΆΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Ρ RN 2.0.1
Π½Π΅ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΠΉΡΠ΅ ΡΠ΅ΠΊΠ²ΠΈΠ·ΠΈΡΡ underlineColorAndroid Π΄Π»Ρ Π»ΡΠ±ΠΎΠ³ΠΎ TextInput ΠΈ ΡΠ΄Π°Π»ΡΠΉΡΠ΅ Π²Π΅ΡΡ ΡΠΎΠ½ Π²Π²ΠΎΠ΄Π° ΡΠ΅ΠΊΡΡΠ° Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΡ ΡΡΠΈΠ»Π΅ΠΉ.
ΠΏΠ΅ΡΠ΅ΠΉΡΠΈ ΠΊ android \ app \ src \ main \ res \ values ββ\ styles.xml
ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΠ΅ ΡΡΠΎ, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅:
Π’ΠΎ ΠΆΠ΅ ΠΏΠΎ RN 0.61.5
Π― ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ», ΡΡΠΎ ΡΡΡΠ½ΠΎΠ΅ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ - ΡΡΠΎ ΠΎΡΠ΅Π½Ρ Π½Π΅ΠΏΡΠΎΡΡΠ°Ρ Π·Π°Π΄Π°ΡΠ°, ΠΏΠΎΡΡΠΎΠΌΡ Ρ Π½Π°ΠΏΠΈΡΠ°Π» ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Π΄Π»Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΡΠ΅Π½Π°ΡΠΈΠ΅Π², ΠΎ ΠΊΠΎΡΠΎΡΡΡ Π»ΡΠ΄ΠΈ ΡΠΎΠΎΠ±ΡΠ°Π»ΠΈ Π²ΡΡΠ΅. ΠΡ Π½Π°ΠΉΠ΄Π΅ΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Π½ΠΈΠΆΠ΅. ΠΠ°ΠΌ ΠΏΡΠΎΡΡΠΎ Π½ΡΠΆΠ½ΠΎ Π³Π΄Π΅-ΡΠΎ Π΅Π³ΠΎ ΠΎΡΡΠ΅Π½Π΄Π΅ΡΠΈΡΡ, ΡΡΠΎΠ±Ρ ΠΎΠ½ Π²ΡΠΏΠΎΠ»Π½ΡΠ» ΡΠ²ΠΎΡ ΡΠ°Π±ΠΎΡΡ.
ΠΡΠΈ ΡΡΠΎΠΌ Ρ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ», ΡΡΠΎ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΠΎΠ»ΡΠΊΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅ Π² AppTheme Π² styles.xml, ΠΊΠ°ΠΊ ΡΡΠΎ Π±ΡΠ»ΠΎ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΎ @Hopding
<item name="android:editTextBackground"><strong i="8">@android</strong>:color/transparent</item>
ΠΠΎΠ»ΡΡΠ΅ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ ΡΡΠ΅Π±ΠΎΠ²Π°Π»ΠΎΡΡ, ΠΈ _Π½Π΅ Π±ΡΠ»ΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ_ ΠΈΠ·Π±Π΅Π³Π°ΡΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ
underlineColorAndroid
, ΠΏΠΎΡΡΠΎΠΌΡ Π½Π΅ ΠΈΠΌΠ΅Π»ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, ΡΡΠΎ React Native ΡΠ΅ΠΏΠ΅ΡΡ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ Π΅Π³ΠΎ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ.ΠΡΠ½ΠΎΠ²Π½ΡΠΌ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΊΠΎΠΌ ΡΡΠΎΠ³ΠΎ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΎ, ΡΡΠΎ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΡΡΠΈΠ»Ρ Π²Π°ΡΠΈΡ TextInputs, ΡΡΠΎΠ±Ρ ΡΡΠ΅ΡΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠΈΡΡΡΡΡΡ ΠΏΠΎΡΠ΅ΡΡ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ, Π° ΡΠ°ΠΊΠΆΠ΅ Π²Ρ ΠΏΠΎΡΠ΅ΡΡΠ΅ΡΠ΅ ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ΄ΡΠ΅ΡΠΊΠΈΠ²Π°Π½ΠΈΡ, ΡΡΠΎ Π΄Π»Ρ Π½Π°Ρ Π±ΡΠ»ΠΎ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²ΠΎΠΌ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΌΡ Π²ΡΠ΅Π³Π΄Π° ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π»ΠΈ Π΅Π³ΠΎ Β«ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΡΠΌΒ» ΡΡΠΎΠ±Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΎΠ²Π°ΡΡ iOS. ΠΡΠ»ΠΈ Π²Π°ΠΌ ΡΡΠΎ Π½ΡΠΆΠ½ΠΎ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΎΠ·Π΄Π°ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ-ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π΅Ρ
onFocus
ΠΈonBlur
ΠΈ Π΄Π΅Π»Π°Π΅Ρ Π²Π°ΡΠ΅ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ ΠΏΠΎΠ΄ΡΠ΅ΡΠΊΠΈΠ²Π°Π½ΠΈΠ΅.ΠΠΎΡ Π²Π΅ΡΡΠΈΡ React Native - 0.57.3.
ΠΠΎΡ Π΅ΡΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π²Π΅ΡΠ΅ΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ Ρ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ» Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ²ΠΎΠ΅Π³ΠΎ ΡΠ΅ΡΡΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°:
- Π― Π²ΠΎΠΎΠ±ΡΠ΅ Π½Π΅ ΠΌΠΎΠ³ Π²ΡΠ·Π²Π°ΡΡ ΡΠ±ΠΎΠΉ Π½Π° ΠΌΠΎΠ΅ΠΌ ΠΏΠ»Π°Π½ΡΠ΅ΡΠ΅ Android Ρ Π½ΠΈΠ·ΠΊΠΈΠΌΠΈ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠ°ΠΌΠΈ. ΠΠ΄Π½Π°ΠΊΠΎ ΡΡΠΎ Π±ΡΠ»ΠΎ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ Π½Π° ΠΌΠΎΠ΅ΠΌ ΡΠ΅Π»Π΅ΡΠΎΠ½Π΅ Samsung S6 Edge ΠΏΠΎΠ΄ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ Android 7. Π― ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Ρ, ΡΡΠΎ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ Π³ΠΎΠ½ΠΊΠΈ, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΡΡΠ΅Π±ΡΠ΅Ρ Π±ΠΎΠ»Π΅Π΅ Π±ΡΡΡΡΠΎΠ³ΠΎ ΡΡΡΡΠΎΠΉΡΡΠ²Π°, ΡΡΠΎΠ±Ρ ΡΠΏΡΠΎΠ²ΠΎΡΠΈΡΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ.
- ΠΡΠΎΠΊΡΡΡΠΊΠ° Π²Π²ΠΎΠ΄Π° ΡΠ΅ΠΊΡΡΠ° Π½Π΅ ΠΈΠΌΠ΅Π»Π° Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, ΠΈ Ρ ΠΌΠΎΠ³ Π»Π΅Π³ΠΊΠΎ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, Π΄Π°ΠΆΠ΅ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ScrollView.
- ΠΠ²ΠΎΠ΄ΠΈΡΡ ΡΠ΅ΠΊΡΡ Π½Π΅ Π±ΡΠ»ΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ. ΠΡΠΎΡΡΠΎΠ³ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΠΎΠΊΡΡΠ° Π±ΡΠ»ΠΎ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ, ΡΡΠΎΠ±Ρ Π²ΡΠ·Π²Π°ΡΡ ΡΠ±ΠΎΠΉ.
- ΠΠ΅ ΠΈΠΌΠ΅Π»ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, ΠΊΠ°ΠΊΠΎΠΉ ΡΠ²Π΅Ρ Π²Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΠ»ΠΈ Π΄Π»Ρ ΠΏΠΎΠ΄ΡΠ΅ΡΠΊΠΈΠ²Π°Π½ΠΈΡ, Π΄Π°ΠΆΠ΅
undefined
Π²ΡΠ·Π²Π°Π» ΡΠ±ΠΎΠΉ, Π½ΠΎ Π²Ρ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΎΠΆΠΈΠ΄Π°Π»ΠΈ, ΡΡΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ RN ΡΠ΅ΠΏΠ΅ΡΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ Π΅Π³ΠΎ Π½Π° Β«ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΡΠΉΒ»- ΠΠ°Π»ΠΈΡΠΈΠ΅ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΡΠ΅ΠΊΡΡΠΎΠ²ΡΡ Π²Ρ ΠΎΠ΄ΠΎΠ², ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅ΠΌΡΡ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ, ΠΈΠΌΠ΅Π»ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΠ±ΠΎΠΉ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΠ» Π±ΡΡΡΡΠ΅Π΅ ΠΏΡΠΈ 100, ΡΠ΅ΠΌ Π²ΡΠ΅Π³ΠΎ 10 Π½Π° ΡΠΊΡΠ°Π½Π΅.
- Π― Π½Π΅ ΠΌΠΎΠ³ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ ΡΠ±ΠΎΠΉ Ρ ΠΏΠΎΠΌΠΎΡΡΡ
displayForMs: 0
ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Ρ, ΡΡΠΎ ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° TextInputs Π±ΡΠ»ΠΈ ΡΠΎΠ·Π΄Π°Π½Ρ ΡΠΎΠ»ΡΠΊΠΎ Π½Π΅Π΄Π°Π²Π½ΠΎ.ΠΡΠ»ΠΈ Π²Ρ Π½Π΅ Ρ ΠΎΡΠΈΡΠ΅ Π·Π°Π²ΠΈΡΠ°ΡΡ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π·Π°ΠΏΠΈΡΠ°ΡΡ Π²ΡΠ²ΠΎΠ΄
adb logcat
ΠΈ Π½Π°ΠΉΡΠΈ ΠΊΠΎΠ½ΡΠΎΠ»ΡΠ½ΡΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ, ΡΠΎΠ·Π΄Π°Π²Π°Π΅ΠΌΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠΌ, ΠΈ ΠΎΡΡΠ΅Ρ ΠΎ ΡΠ±ΠΎΡΡ .ΠΠΎΡ ΠΌΠΎΠΉ ΡΠ΅ΡΡΠΎΠ²ΡΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ, Π΅ΡΠ»ΠΈ Π²Ρ Π·Π°Ρ ΠΎΡΠΈΡΠ΅ Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ. ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΡΠ΅ΡΡΠ° Π½Π°ΡΡΡΠΎΠ΅Π½Ρ ΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ Π²ΡΠ·ΡΠ²Π°ΡΡ ΡΠ±ΠΎΠΉ, ΠΊΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ, ΠΌΠ΅Π½Π΅Π΅ ΡΠ΅ΠΌ Π·Π° 30 ΡΠ΅ΠΊΡΠ½Π΄.
/** * A test component to reproduce the crash reported at * https://github.com/facebook/react-native/issues/17530 */ import * as React from "react"; import { View, ScrollView, TextInput, Text, StyleSheet } from "react-native"; // These are the test parameters const params = { underlineColors: ["red", undefined, "transparent", "rgba(0, 0, 0, 0)"], // The colors to test numberOfInputs: 100, // How many TextInput to render at a time focusIntervalMs: 200, // How often to change focus between them displayForMs: 3000, // How long to display them (set to 0 for indefinite) delayDisplayForMs: 10, // How long to delay between displays withScrollView: false // Whether to use a ScrollView }; const testText = index => `Testing underlineColor = ${params.underlineColors[index] || "undefined"}`; class AndroidTextInputTest extends React.Component{ state = { underlineColorIndex: 0, showInputs: true, startKey: 0 }; mounted = false; focusInterval = undefined; textInputRefs = undefined; focussedInputIndex = 0; componentDidMount() { console.log(`Testing with params = `, JSON.stringify(params)); this.mounted = true; setTimeout(this._showInputs, params.delayDisplayForMs); setInterval(this._focusAnInput, params.focusIntervalMs); } componentWillUnmount() { clearInterval(this.focusInterval); this.mounted = false; } _focusAnInput = () => { if (this.mounted && this.textInputRefs) { if (this.focussedInputIndex >= this.textInputRefs.length) { this.focussedInputIndex = 0; } const textInputRef = this.textInputRefs[this.focussedInputIndex]; const textInput = this.refs[textInputRef]; if (textInput) { this.focussedInputIndex++; this.refs[textInputRef].focus(); } } }; _showInputs = () => { if (this.mounted) { console.log(testText(this.state.underlineColorIndex)); this.setState({ showInputs: true }); if (params.displayForMs) { setTimeout(this._unshowInputs, params.displayForMs); } } }; _unshowInputs = () => { this.focussedInputIndex = 0; this.textInputRefs = undefined; if (this.mounted) { let next = this.state.underlineColorIndex + 1; if (next === params.underlineColors.length) { next = 0; } this.setState({ underlineColorIndex: next, showInputs: false, startKey: this.state.startKey + params.numberOfInputs }); setTimeout(this._showInputs, params.delayDisplayForMs); } }; render() { const textInputs = []; const { underlineColorIndex } = this.state; const underlineColor = params.underlineColors[underlineColorIndex]; const refs = []; if (this.state.showInputs) { for (let i = 0; i < params.numberOfInputs; i++) { const key = this.state.startKey + i + ""; refs.push(key); textInputs.push( <TextInput ref={key} key={key} placeholder={key} underlineColorAndroid={underlineColor} style={styles.textInput} /> ); } if (!this.textInputRefs) { this.textInputRefs = refs; } } return ( <View style={styles.mainView}> <Text>{testText(underlineColorIndex)}</Text> {params.withScrollView ? ( <React.Fragment> <Text>With ScrollView</Text> <ScrollView>{textInputs}</ScrollView> </React.Fragment> ) : ( <React.Fragment>{textInputs}</React.Fragment> )} </View> ); } } const styles = StyleSheet.create({ mainView: { flex: 1, alignItems: "center" }, textInput: { backgroundColor: "white", margin: 5, width: 300 } }); export default AndroidTextInputTest;
ΠΠΎΠ³Ρ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠ΄ΠΈΡΡ, ΡΡΠΎ ΡΡΠΎ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΎ Π΄Π»Ρ ΠΌΠ΅Π½Ρ!
Π― ΡΠ°Π΄, ΡΡΠΎ ΠΌΠΎΠΉ ΡΠ΅ΡΡΠΎΠ²ΡΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ ΠΈ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΡΡΠ°Π±ΠΎΡΠ°Π»ΠΈ Π΄Π»Ρ Π²Π°Ρ @gagangoku
ΠΠ»Ρ ΡΠ΅Ρ , ΠΊΡΠΎ Ρ ΠΎΡΠ΅Ρ ΡΠ²ΠΈΠ΄Π΅ΡΡ ΡΡΠΎ Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅, ΡΡΡΠ»ΠΊΠ° Π·Π΄Π΅ΡΡ
ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π²Ρ Π±ΡΠ΄Π΅ΡΠ΅ Π½Π°ΡΡΠΎΠ»ΡΠΊΠΎ Π»ΡΠ±Π΅Π·Π½Ρ, ΡΡΠΎΠ±Ρ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΡΡΡ ΡΡΡΠ»ΠΊΡ Π² ΡΠ²ΠΎΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ.
ΠΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎΡ @ glenn-axsy ΡΡΠ°Π±ΠΎΡΠ°Π»ΠΎ Π΄Π»Ρ ΠΌΠ΅Π½Ρ (ΠΊΠ°ΠΊ ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ πππ), Π½ΠΎ ΠΏΠΎ ΠΏΡΡΠΈ Ρ ΡΡΠΎΠ»ΠΊΠ½ΡΠ»ΡΡ Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΠΌΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°ΠΌΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ ΠΏΠΎΠΌΠΎΡΡ Π΄ΡΡΠ³ΠΎΠΉ Π·Π°Π±Π»ΡΠ΄ΡΠ΅ΠΉ Π΄ΡΡΠ΅:
ΠΠΎΡ AppTheme Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ»Π°ΡΡ Π² ΡΠ°ΠΉΠ»Π΅ AndroidManifest.xml
ΠΈΠ·-Π·Π° ΠΎΡΠΈΠ±ΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΡ Π΄ΠΎΠΏΡΡΡΠΈΠ» ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΠΏΡΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ Π·Π°ΡΡΠ°Π²ΠΊΠΈ. ΠΠ°ΠΊ ΡΠΎΠ»ΡΠΊΠΎ Ρ ΠΈΡΠΏΡΠ°Π²ΠΈΠ» ΠΈ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠ΄ΠΈΠ», ΡΡΠΎ AppTheme Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ² ΡΠ²Π΅Ρ ΡΠ΅ΠΊΡΡΠ° ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΈ ΡΠ²ΠΈΠ΄Π΅Π² Π΅Π³ΠΎ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ), ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΡΠ°Π±ΠΎΡΠ°Π»ΠΎ.
ΠΠΎΠ»ΡΡΠΎΠ΅ ΡΠΏΠ°ΡΠΈΠ±ΠΎ ΠΈ ΡΠ΄Π°ΡΠΈ!
Π’Π°ΠΊΠΎΠ΅ ΡΠ»ΡΡΠ°Π΅ΡΡΡ ΡΠΎ ΠΌΠ½ΠΎΠΉ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ expo. Π― Π·Π°ΠΏΡΡΠΊΠ°Ρ ΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ.
sudo expo start -c
ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΠΈΡΡΠ΅Π·Π»Π°.
@HakimAsa Π― ΠΏΡΠ΅Π΄Π»Π°Π³Π°Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΡΡΠΎΠ±Ρ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ, ΡΡΠΎ ΠΎΠ½ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΏΡΠΎΡΠ΅Π».
ΠΡ ΡΡΡΠ°Π½Π½ΠΎΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΊΠΎΠ΄ ΠΏΡΠΎΡΠ°Π±ΠΎΡΠ°Π» ΠΌΠ΅ΡΡΡ Π±Π΅Π· ΡΡΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ. ΠΠΎ ΠΏΠΎΡΠ»Π΅ Π½Π΅ΠΎΠ΄Π½ΠΎΠΊΡΠ°ΡΠ½ΠΎΠΉ ΠΏΠ΅ΡΠ΅Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π²ΡΠ΅ΡΠ° Ρ ΡΡΠΎΠ»ΠΊΠ½ΡΠ»ΡΡ Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ ... Π Π»ΡΠ±ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Ρ ΠΏΠΎΠΏΡΠΎΠ±ΡΡ Π²Π°ΡΠ΅ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ @ glenn-axsy
Π ΠΌΠΎΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΠ»ΠΎ Π² FlatList, ΠΊΠΎΠ³Π΄Π° renderItem
Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ <TextInput />
. Π― ΡΠ΅ΡΠΈΠ» ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, Π²Π΅ΡΠ½ΡΠ² <><TextInput /></>
@MahmoudHemaid: ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΡΠ°ΠΊ ΡΠ»ΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ, ΡΡΠΎ Π²Ρ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π½Π΅ ΡΠΌΠΎΠ³Π»ΠΈ Π΅Π΅ ΡΠ΅ΡΠΈΡΡ. ΠΠΎΠ»ΡΡΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ Π·Π΄Π΅ΡΡ .
android.graphics.drawable.Drawable $ constantstate, newdrawable ΠΏΡΠΈ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠΈ ΠΎΡΠΈΠ±ΠΊΠΈ Π½ΡΠ»Π΅Π²ΠΎΠΉ ΡΡΡΠ»ΠΊΠΈ, ΠΊΠΎΠ³Π΄Π° Ρ ΡΠ΅Π»ΠΊΠ°Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅, ΠΏΠΎΠΌΠ΅ΡΠ΅Π½Π½ΠΎΠ΅ Π² ΡΠ°ΠΌΡΠΉ ΠΏΡΠ°Π²ΡΠΉ ΡΠ³ΠΎΠ». Π ΡΡΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π΄Π΅ΠΉΡΡΠ²ΡΠ΅Ρ ΠΊΠ°ΠΊ ΠΊΠ½ΠΎΠΏΠΊΠ° ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ. Π― ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ RN 0.61.2. ΠΡΠΎ-Π½ΠΈΠ±ΡΠ΄Ρ, ΠΏΠΎΠΆΠ°Π»ΡΠΉΡΡΠ°, ΠΏΠΎΠΌΠΎΠ³ΠΈΡΠ΅ ΠΌΠ½Π΅ ΡΠ΅ΡΠΈΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ. ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΡΠΎΠ»ΡΠΊΠΎ Π² Π°Π²ΡΠΎΠ½ΠΎΠΌΠ½ΠΎΠΌ apk
@ glenn-axsy https://github.com/facebook/react-native/issues/17530#issuecomment -504044357
ΠΡΠΈ ΡΡΠΎΠΌ Ρ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ», ΡΡΠΎ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΠΎΠ»ΡΠΊΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅ Π² AppTheme Π² styles.xml, ΠΊΠ°ΠΊ ΡΡΠΎ Π±ΡΠ»ΠΎ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΎ @Hopding
<item name="android:editTextBackground"><strong i="9">@android</strong>:color/transparent</item>
https://github.com/facebook/react-native/pull/27782#issuecomment -575753501
Π‘Π°ΠΌΡΠΉ ΠΏΡΠΎΡΡΠΎΠΉ ΠΏΡΠΈΠΌΠ΅Ρ - ΠΏΡΠΎΡΡΠΎ ΡΠΎΠ·Π΄Π°ΡΡ
EditText
Ρ Π½ΡΠ»Π΅Π²ΡΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌAttributeSet
ΠΈ Π±Π΅Π· (0) Π°ΡΡΠΈΠ±ΡΡΠΎΠ² ΡΡΠΈΠ»Ρ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ:
<strong i="18">@Override</strong>
protected EditText createDummyEditText() {
return new EditText(getThemedContext(), null, 0);
}
ReactTextInput
ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΎ ΠΏΠΎΠ΄ΠΊΠ»Π°ΡΡΠ°ΠΌΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Ρ
ΠΎΡΠ΅Π»ΠΈ Π±Ρ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΡΡ ΡΠ²ΠΎΠΉ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΉ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ EditText
.
ΠΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ EditText
android:
public class EditText extends TextView {
public EditText(Context context, AttributeSet attrs, int defStyleAttr) {
this(context, attrs, defStyleAttr, 0);
}
}
ΠΊΠΎΡΠΎΡΡΠΉ Π²ΡΠ·ΡΠ²Π°Π΅Ρ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ View
( Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΡ )
Π― ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΡ ΡΠ°ΡΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅. Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ
ΠΡΠΈΠ²Π΅Ρ, @ glenn-axsy, Ρ Π±ΠΎΡΡΡΡ Ρ ΡΡΠΈΠΌ ΡΠΆΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°ΡΠΎΠ², ΠΏΠΎΡΡΠΎΠΌΡ Ρ ΠΎΡΠ΅Π½Ρ Π½Π°Π΄Π΅ΡΡΡ, ΡΡΠΎ ΡΡ ΡΠΌΠΎΠΆΠ΅ΡΡ ΠΌΠ½Π΅ ΠΏΠΎΠΌΠΎΡΡ. Π― ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π²Π°Ρ AndroidTextInputTest Π½Π° ΡΠ²ΠΎΠ΅ΠΌ ΡΠ΅Π»Π΅ΡΠΎΠ½Π΅ Android. Π― ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ React Native Ρ Typescript, Π΅ΡΠ»ΠΈ ΡΡΠΎ Π²Π°ΠΆΠ½ΠΎ, ΠΈ Π΄Π΅Π»Π°Ρ ΡΡΠΎ ΡΠ΅ΡΠ΅Π· Expo. ΠΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ Ρ ΠΌΠ΅Π½Ρ Π½Π΅Ρ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Π° ΡΠΈΠΏΠ° EditText.
React native Π² package.json = "react-native": "^ 0.61.4"
Π― ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π» ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ:
const params = {
underlineColors: ["red", undefined, "transparent", "rgba (0, 0, 0, 0)"], // Π¦Π²Π΅ΡΠ° Π΄Π»Ρ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ
numberOfInputs: 100, // Π‘ΠΊΠΎΠ»ΡΠΊΠΎ TextInput ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡ Π·Π° ΡΠ°Π·
focusIntervalMs: 200, // ΠΠ°ΠΊ ΡΠ°ΡΡΠΎ ΠΌΠ΅Π½ΡΡΡ ΡΠΎΠΊΡΡ ΠΌΠ΅ΠΆΠ΄Ρ Π½ΠΈΠΌΠΈ
displayForMs: 3000, // ΠΠ°ΠΊ Π΄ΠΎΠ»Π³ΠΎ ΠΈΡ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡ (0 Π½Π° Π½Π΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΉ ΡΡΠΎΠΊ)
delayDisplayForMs: 10, // ΠΠ°ΠΊ Π΄ΠΎΠ»Π³ΠΎ Π·Π°Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡΠΌΠΈ
withScrollView: false, // Π‘Π»Π΅Π΄ΡΠ΅Ρ Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ScrollView
};
Π ΠΌΠΎΠΉ Π²ΡΠ²ΠΎΠ΄ Π΄ΠΎ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Β«ΠΠΎΠΏΡΡΠΊΠΈ Π²ΡΠ·Π²Π°ΡΡ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄Β» Π±ΡΠ»:
Π’Π΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Ρ params = {"underlineColors": ["red", null, "transparent", "rgba (0, 0, 0, 0)"], "numberOfInputs": 100, "focusIntervalMs": 200, "displayForMs": 3000, "delayDisplayForMs": 10, "withScrollView": false}
ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ CalendarVisible ΠΈΡΡΠΈΠ½Π½Ρ, Π° ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΠΈΡΡΠΈΠ½Π½ΠΎ
Π’Π΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ underlineColor = red
Π’Π΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ underlineColor = undefined
Π’Π΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ underlineColor = transparent
Π’Π΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ underlineColor = rgba (0, 0, 0, 0)
Π’Π΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ underlineColor = red
Π’Π΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ underlineColor = undefined
Π’Π΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ underlineColor = transparent
ΠΡΠ°ΠΊ, ΠΌΠΎΠΉ Π²ΠΎΠΏΡΠΎΡ ΠΎΡΡΡΠ΄Π°: ΠΊΠ°ΠΊ Ρ ΠΌΠΎΠ³Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΈ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ, ΠΊΠΎΡΠΎΡΡΠΉ Ρ Π²ΠΈΠ΄Π΅Π» Π΄ΠΎ ΡΠ±ΠΎΡ, Π΄Π»Ρ Π΄ΠΈΠ°Π³Π½ΠΎΡΡΠΈΠΊΠΈ ΡΠΎΠ³ΠΎ, ΡΡΠΎ Π½Π΅ ΡΠ°ΠΊ Π² ΠΌΠΎΠ΅ΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ?
Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ Π·Π° Π»ΡΠ±ΡΡ ΠΏΠΎΠΌΠΎΡΡ.
@ucheNkadiCode ΠΡΠΎ ΡΠ΅ΡΡ Π΄Π»Ρ Π±ΡΡΡΡΠΎΠ³ΠΎ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, Π° Π½Π΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅. Π Π΅ΡΠ΅Π½ΠΈΠ΅
<item name="android:editTextBackground"><strong i="7">@android</strong>:color/transparent</item>
@ucheNkadiCode ΠΡΠΎ ΡΠ΅ΡΡ Π΄Π»Ρ Π±ΡΡΡΡΠΎΠ³ΠΎ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, Π° Π½Π΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅. Π Π΅ΡΠ΅Π½ΠΈΠ΅
<item name="android:editTextBackground"><strong i="8">@android</strong>:color/transparent</item>
@sunnylqm Π― react native, ΠΏΠΎΡΡΠΎΠΌΡ Ρ Π½ΠΈΠ³Π΄Π΅ Π² ΠΊΠΎΠ΄Π΅ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ item.
Π― ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ TextInput, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ°ΠΊ:
ΠΠ²ΠΎΠ΄ ΡΠ΅ΠΊΡΡΠ°
ref = {ΠΊΠ»ΡΡ}
ΠΊΠ»ΡΡ = {ΠΊΠ»ΡΡ}
Π·Π°ΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»Ρ = {ΠΊΠ»ΡΡ}
underlineColorAndroid = {underlineColor}
style = {styles.textInput}
Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ
@ucheNkadiCode
ΠΠΎ Π΄Π»Ρ Π²ΡΡΡΠ°Π²ΠΊΠΈ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΠ½Π°ΡΠ°Π»Π° ΠΈΠ·Π²Π»Π΅ΡΡ, ΡΡΠΎΠ±Ρ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΡΠ°ΠΊΠΈΠ΅ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ
@ucheNkadiCode
ΠΠΎ Π΄Π»Ρ Π²ΡΡΡΠ°Π²ΠΊΠΈ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΠ½Π°ΡΠ°Π»Π° ΠΈΠ·Π²Π»Π΅ΡΡ, ΡΡΠΎΠ±Ρ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΡΠ°ΠΊΠΈΠ΅ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ
ΠΠ°, ΡΡΠΎ ΠΏΠΎ ΠΏΡΠ°Π²Ρ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ. Π― Π½Π΅ Ρ ΠΎΡΡ ΠΏΠ»Π°ΡΠΈΡΡ ΡΠ΅Π½Ρ Π·Π° ΠΈΠ·Π²Π»Π΅ΡΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠ΅Π³ΠΎ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ React Native Π½Π° ΡΡΠΎΠ»Ρ ΡΠ°Π½Π½Π΅ΠΌ ΡΡΠ°ΠΏΠ΅ Π΅Π³ΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ. Π― Π½Π°Π΄Π΅ΡΡΡ Π½Π°ΠΉΡΠΈ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΡΠ΄Π΅ΡΠΆΠΈΡ ΠΌΠ΅Π½Ρ Π² React Native.
Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ Π·Π° Π²Π°ΡΡ ΠΏΠΎΠΌΠΎΡΡ
@ axsy-dev @ucheNkadiCode
ΠΌΠΎΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ ΡΠ°Π±ΠΎΡΠ°Π» Π² ΡΡΠΎΠΌ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠΈ, ΡΡΠΎΠ±Ρ ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ ΡΡΠΎ Π² Π·Π°ΠΏΡΠΎΡΠ΅ Π½Π° ΠΏΠ΅ΡΠ΅Π½ΠΎΡ, ΡΡΠΎΠ±Ρ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ, ΡΠ²ΡΠ·Π°Π½Π½ΡΡ
Ρ TextInput
prop underlineColorAndroid
. ReactNative ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ ΡΠ΅ΠΌΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠΌ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ ... ΠΏΠΎΠΆΠ°Π»ΡΠΉΡΡΠ°, ΠΏΡΠΎΡΠΌΠΎΡΡΠΈΡΠ΅ ΠΌΠΎΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ ΠΈ Π²Π΅ΡΠ½ΠΈΡΠ΅ΡΡ ΠΊΠΎ ΠΌΠ½Π΅ Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΠΌΠΈ ΠΎΡΠ·ΡΠ²Π°ΠΌΠΈ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ Ρ Π½Π΅ ΡΠΌΠΎΠ³ ΡΠ΅ΡΠΈΡΡ ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, ΠΈ ΡΠ΅ΠΉΡΠ°Ρ Ρ ΡΠ°Π±ΠΎΡΠ°Ρ Π½Π°Π΄ Π΄ΡΡΠ³ΠΈΠΌ Π·Π°ΠΏΡΠΎΡΠΎΠΌ Π½Π° ΠΏΠ΅ΡΠ΅Π½ΠΎΡ. Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ
ΠΠ½Π΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠ΄Π°Π»ΠΎΡΡ ΡΠ΅ΡΠΈΡΡ ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΠ°Π² ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ ΡΠ΅Π°ΠΊΡΠΈΠΈ ReactTextInput
<strong i="12">@Override</strong>
protected EditText createDummyEditText() {
return new EditText(getThemedContext(), null, 0);
}
ΠΠΎ ΡΡΠΎ ΠΏΡΠΎΡΡΠΎ ΠΎΡΠΊΠ»ΡΡΠ°Π΅Ρ ΡΡΠΈΠ»Ρ, ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π½ΡΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ EditText Ρ ΠΏΠΎΠΌΠΎΡΡΡ getThemedContext()
ΠΊΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΡΡΠ΅ΠΊ ΡΠΎΠΎΠ±ΡΠ°Π΅Ρ Π½Π°ΠΌ, ΡΡΠΎ ΡΡΠ° ΠΎΡΠΈΠ±ΠΊΠ° Π²ΡΠ·Π²Π°Π½Π° ReactEditText.onTouchEvent
, ΠΏΠΎΡΡΠΎΠΌΡ, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΊΠ°ΡΠ°Π΅ΡΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° TextInput
.
ΠΌΠΎΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ ΡΠ°Π±ΠΎΡΠ°Π» Π² ΡΡΠΎΠΌ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠΈ, ΡΡΠΎΠ±Ρ ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ ΡΡΠΎ Π² Π·Π°ΠΏΡΠΎΡΠ΅ Π½Π° ΠΏΠ΅ΡΠ΅Π½ΠΎΡ, ΡΡΠΎΠ±Ρ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ, ΡΠ²ΡΠ·Π°Π½Π½ΡΡ Ρ
TextInput
propunderlineColorAndroid
. ReactNative ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ ΡΠ΅ΠΌΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠΌ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ ... ΠΏΠΎΠΆΠ°Π»ΡΠΉΡΡΠ°, ΠΏΡΠΎΡΠΌΠΎΡΡΠΈΡΠ΅ ΠΌΠΎΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ ΠΈ Π²Π΅ΡΠ½ΠΈΡΠ΅ΡΡ ΠΊΠΎ ΠΌΠ½Π΅ Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΠΌΠΈ ΠΎΡΠ·ΡΠ²Π°ΠΌΠΈ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ Ρ Π½Π΅ ΡΠΌΠΎΠ³ ΡΠ΅ΡΠΈΡΡ ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, ΠΈ ΡΠ΅ΠΉΡΠ°Ρ Ρ ΡΠ°Π±ΠΎΡΠ°Ρ Π½Π°Π΄ Π΄ΡΡΠ³ΠΈΠΌΠΈ Π·Π°ΠΏΡΠΎΡΠ°ΠΌΠΈ Π½Π° Π²ΡΡΡΠ³ΠΈΠ²Π°Π½ΠΈΠ΅.ΠΠ½Π΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠ΄Π°Π»ΠΎΡΡ ΡΠ΅ΡΠΈΡΡ ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΠ°Π² ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ ΡΠ΅Π°ΠΊΡΠΈΠΈ
ReactTextInput
<strong i="12">@Override</strong> protected EditText createDummyEditText() { return new EditText(getThemedContext(), null, 0); }
ΠΠΎ ΡΡΠΎ ΠΏΡΠΎΡΡΠΎ ΠΎΡΠΊΠ»ΡΡΠ°Π΅Ρ ΡΡΠΈΠ»Ρ, ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π½ΡΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ EditText Ρ ΠΏΠΎΠΌΠΎΡΡΡ
getThemedContext()
ΠΊΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΡΡΠ΅ΠΊ ΡΠΎΠΎΠ±ΡΠ°Π΅Ρ Π½Π°ΠΌ, ΡΡΠΎ ΡΡΠ° ΠΎΡΠΈΠ±ΠΊΠ° Π²ΡΠ·Π²Π°Π½Π°
ReactEditText.onTouchEvent
, ΠΏΠΎΡΡΠΎΠΌΡ, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΊΠ°ΡΠ°Π΅ΡΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°TextInput
.
@ axsy-dev @ fabriziobertoglio1987. ΠΠΎΡΡΠΎΠΌΡ Ρ ΠΌΠ΅Π½Ρ Π½Π΅Ρ Π½ΠΈΠΊΠ°ΠΊΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Ρ ΠΌΠΎΠ³Ρ Π½Π°ΠΉΡΠΈ Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅ ΠΌΠΎΠ΅Π³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ° Ρ ΠΏΠΎΠΌΠΎΡΡΡ ReactEditText, ΠΈ Ρ ΠΌΠ΅Π½Ρ ΡΠ°ΠΊΠΆΠ΅ Π½Π΅Ρ ΡΠ°ΠΉΠ»ΠΎΠ² .java Π² ΠΌΠΎΠ΅ΠΌ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅. Π― ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ TypeScript Ρ ΡΠΎΠ΄Π½ΡΠΌ React, ΠΏΠΎΡΡΠΎΠΌΡ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΠΌΠΎΠΈΡ ΡΠ°ΠΉΠ»ΠΎΠ² ΠΈΠΌΠ΅ΡΡ ΡΠΎΡΠΌΠ°Ρ .tsx ΠΈΠ»ΠΈ .ts, Π·Π° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π° node_modules.
Π ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡ, Ρ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΉ Android.
@ucheNkadiCode, ΡΡΠΎΠ±Ρ ΡΠ΅ΡΠΈΡΡ ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, ΡΠ΅ΠΏΠ΅ΡΡ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΈΠ·Π²Π»Π΅ΡΡ, Π² ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π²ΠΎΡΡΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΡΡΠΎΡ ΡΡΠ΅Π½Π°ΡΠΈΠΉ Π² reactnative, Π½Π°ΠΏΠΈΡΠΈΡΠ΅ Π·Π°ΠΏΡΠΎΡ Π½Π° ΠΏΠ΅ΡΠ΅Π½ΠΎΡ, ΠΎΠ½ Π±ΡΠ΄Π΅Ρ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ Π² react-native, Π° Π·Π°ΡΠ΅ΠΌ ΠΏΠΎΠ·ΠΆΠ΅ expo.
@ucheNkadiCode ΠΠΎΡΡΡ, Ρ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Expo, Π½ΠΎ ΠΏΠΎΡ ΠΎΠΆΠ΅, ΡΡΠΎ @sunnylqm Π·Π½Π°Π΅Ρ, ΠΎ ΡΠ΅ΠΌ ΠΎΠ½ Π³ΠΎΠ²ΠΎΡΠΈΡ
Π― ΡΡΠΎΠ»ΠΊΠ½ΡΠ»ΡΡ Ρ ΡΠΎΠΉ ΠΆΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ Π½Π° Π²ΡΡΡΠ°Π²ΠΊΠ΅.
Π― ΠΏΡΠΎΠ±ΠΎΠ²Π°Π»: watchman watch-del-all && expo r -c
Π½ΠΎ Π²ΡΠ΅ ΠΆΠ΅ ΡΠ΅ΠΏΠ΅ΡΡ Ρ
ΠΎΡΠΎΡΠΈΠ΅ Π½ΠΎΠ²ΠΎΡΡΠΈ.
Π― ΡΡΠΎΠ»ΠΊΠ½ΡΠ»ΡΡ Ρ ΡΠΎΠΉ ΠΆΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΈΡΡΠ΅Π·Π°Π΅Ρ, Π΅ΡΠ»ΠΈ Ρ ΠΏΡΠ΅Π²ΡΠ°ΡΠ°Ρ ΡΠ²ΠΎΠΉ TextInput Π² ΡΠ΅ΠΊΡΡ.
ΠΡΠΎΡ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ, ΡΠ΄Π΅Π»Π°Π½Π½ΡΠΉ 2 Π³ΠΎΠ΄Π° Π½Π°Π·Π°Π΄, Π²ΡΠ΅ Π΅ΡΠ΅ Π² ΡΠΈΠ»Π΅.
Π― ΡΡΠ·ΠΈΠ» Π΅Π³ΠΎ Π΄ΠΎ
<TextInput>
, ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅ΠΌΠΎΠ³ΠΎ Π² FlatList. ΠΠΎΠ³Π΄Π° Ρ Π·Π°ΠΌΠ΅Π½ΡΡ ΡΡΠΎ Π½Π°<Text>
, ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΠΈΡΡΠ΅Π·Π°Π΅Ρ.
Π‘Π±ΡΠΎΡ ΠΊΠ΅ΡΠ°, ΠΊΠ°ΠΆΠ΅ΡΡΡ, ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ Π½Π΅Π½Π°Π΄ΠΎΠ»Π³ΠΎ, Π½ΠΎ ΠΌΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ½ΠΎΠ²Π° Π²ΡΠ»Π΅ΡΠ°Π»ΠΎ ΠΏΠΎΡΠ»Π΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΡΠ΅Π»ΡΠΊΠΎΠ² ΠΊΠ½ΠΎΠΏΠΎΠΊ.
Π’Π΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ @diegoboston Ρ ΠΌΠΎΠΈΠΌ ΡΠ΅ΡΡΠΎΠ²ΡΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠΌ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ ΡΡΠΎ Π±Π΅Π· FlatList. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°ΠΉΡΠΈ ΡΠ΅ΡΡΠΎΠ²ΡΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ ΠΈ ΠΎΠ±Ρ ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡΡΡ / ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π² ΠΌΠΎΠ΅ΠΌ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ Π·Π΄Π΅ΡΡ .
Π― ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ expo SDK 37, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Π²Π½ΡΡΡΠ΅Π½Π½ΡΡ ΡΠ΅Π°ΠΊΡΠΈΡ Π½Π° 0,61.
Π‘ΡΡΠ°Π½Π½ΠΎ, ΡΡΠΎ Ρ ΠΌΠ΅Π½Ρ Π½Π΅ Π±ΡΠ»ΠΎ Π½ΠΈΠΊΠ°ΠΊΠΈΡ
ΠΏΡΠΎΠ±Π»Π΅ΠΌ, Π½ΠΎ Π²Π½Π΅Π·Π°ΠΏΠ½ΠΎ, ΠΊΠΎΠ³Π΄Π° Ρ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΡΡΡΠΈΠ» Builder, ΡΡΠ° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π°. ΠΡΠΎ Π΅ΡΠ΅ Π½Π΅ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΎ?
RN 0.62.2
+ Android
Π·Π΄Π΅ΡΡ ΡΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅.
ΠΡΠ° ΠΎΡΠΈΠ±ΠΊΠ° Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ Π² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π΅Π½Π½ΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅.
ΠΡΠΈΡΡΠΊΠ° ΠΊΠ΅ΡΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈΠ· Π½Π°ΡΡΡΠΎΠ΅ΠΊ ΡΠ΅ΡΠΈΠ»Π° ΠΌΠΎΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, Π½ΠΎ ΡΡΠΎ Π½Π΅ ΠΊΠ°ΠΆΠ΅ΡΡΡ ΠΏΡΠΈΠ΅ΠΌΠ»Π΅ΠΌΡΠΌ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ.
Π― ΡΠ°Π±ΠΎΡΠ°Π» Π½Π°Π΄ ΡΡΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ, ΠΈ Π²ΠΎΡ ΠΌΠΎΠΈ Π²ΡΠ²ΠΎΠ΄Ρ (ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠΉ ΠΏΠΎΡΡ Π·Π΄Π΅ΡΡ ).
1) ΠΡ Π·Π½Π°Π΅ΠΌ, ΡΡΠΎ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ android:editTextBackground
Ρ color/transparent
ΠΊ ΡΠ΅ΠΌΠ΅ ΡΠ΅ΡΠ°Π΅Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ.
<item name="android:editTextBackground"><strong i="10">@android</strong>:color/transparent</item>
2) ΠΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ReactEditTextShadowNode
method createDummyEditText
Π½Π° ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΠΉ Π½ΠΈΠΆΠ΅ ΠΊΠΎΠ΄ ΡΠ°ΠΊΠΆΠ΅ ΡΡΡΡΠ°Π½ΡΠ΅Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ (ΠΌΠ½Π΅ ΠΊΠ°ΠΆΠ΅ΡΡΡ, ΡΡΠΎ ΠΎΡΠΊΠ»ΡΡΠ°ΡΡΡΡ Π²ΡΠ΅ ΡΡΠΈΠ»ΠΈ Π΄Π»Ρ EditText)
<strong i="16">@Override</strong>
protected EditText createDummyEditText() {
return new EditText(getThemedContext(), null, 0);
}
ΠΠ°ΡΠΊΠΎΠ»ΡΠΊΠΎ Ρ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ, ΡΡΠ° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ Π² Android Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡ ΡΡΠΈΠ»ΠΈ Π΄Π²ΡΠΌΡ ΡΠΏΠΎΡΠΎΠ±Π°ΠΌΠΈ.
1) ΠΠ°ΠΏΠΈΡΠ°Π½ΠΈΠ΅ XML, ΡΠ°ΠΊΠΈΡ
ΠΊΠ°ΠΊ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΈ ΡΡΠΈΠ»ΠΈ html, ΠΈ ΠΈΡ
ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅
2) ΠΡΠ·ΠΎΠ²ΠΈΡΠ΅ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ EditText
ΠΈΠ»ΠΈ View
ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΠΉΡΠ΅ Π΅ΠΌΡ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ Π°ΡΡΠΈΠ±ΡΡΡ / ΡΡΠΈΠ»ΠΈ.
ReactEditText
ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ createDummyEditText
Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° EditText
Π° Π·Π°ΡΠ΅ΠΌ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΠΈΠ»ΠΈ (ΠΎΡΡΡΡΠΏΡ, ΠΌΠ°ΠΊΠ΅Ρ ΠΈ Ρ. Π.), ΠΠΎ ΡΡΠΎ ΡΡΠΎ-ΡΠΎ ΡΠ²ΡΠ·Π°Π½ΠΎ Ρ ΠΌΠ°ΠΊΠ΅ΡΠΎΠΌ (ΠΎΡΡΡΡΠΏΡ, ΠΏΠΎΠ»Ρ) ΠΈ Π½Π΅ ΡΠ²Π΅ΡΠ° ΡΠΎΠ½Π° ΠΈ Ρ. Π΄. ΠΠ° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ Ρ ΠΏΠΎΠΏΡΡΠ°Π»ΡΡ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΡΡΠΈ ΡΡΡΠΎΠΊΠΈ ΠΊΠΎΠ΄Π° Π½Π° setBackgroundTint
Π½Π° red
ΠΈΠ»ΠΈ transparent
ΠΈ ΡΡΠΎ Π½Π΅ ΡΡΠ°Π±ΠΎΡΠ°Π»ΠΎ ...
ΡΠ²Π΅Ρ ΡΠΎΠ½Π° ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ
Π ΠΏΠΎΠ½Π΅Π΄Π΅Π»ΡΠ½ΠΈΠΊ Ρ ΡΠ½ΠΎΠ²Π° ΠΏΠΎΠΏΡΠΎΠ±ΡΡ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΠΌΠ΅ΡΠΎΠ΄ setBackgroundColor
ΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΡΠΉ ΡΠ²Π΅Ρ ΡΠΎΠ½Π° Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ... ΠΡΠΎ Π±ΡΠ΄Π΅Ρ ΠΌΠΎΠΉ ΠΏΠ΅ΡΠ²ΡΠΉ ΠΊΠ»ΡΡ ΠΊ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΡΡΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ
Π‘ΡΠ΅ΠΊ Π½Π΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π½Π° createInternalEditText
/**
* May be overriden by subclasses that would like to provide their own instance of the internal
* {<strong i="9">@code</strong> EditText} this class uses to determine the expected size of the view.
*/
protected EditText createInternalEditText() {
return new EditText(getThemedContext());
}
createInternalEditText
- ΡΡΠΎ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ ΠΌΠ΅ΡΠΎΠ΄, Π²ΡΠ·ΡΠ²Π°Π΅ΠΌΡΠΉ ΠΏΠ΅ΡΠ΅Π΄ ΠΎΡΠΈΠ±ΠΊΠΎΠΉ, ΠΎΡΡΠ°Π»ΡΠ½Π°Ρ ΡΠ°ΡΡΡ ΡΡΠ΅ΠΊΠ° - ΠΈΠ· Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Android sdk OpenSource, ΠΈ ΡΡΠΎ Π½Π΅ Π½Π°ΡΡΠΎΡΡΠ°Ρ ΠΏΡΠΈΡΠΈΠ½Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ.
Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° android:editTextBackground
ΠΏΡΠΎΡΡΠΎ, Π²Π΅ΡΠΎΡΡΠ½ΠΎ, ΠΏΠ΅ΡΠ΅ΠΊΡΡΠ²Π°Π΅Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΈΠ· ΡΠ΅ΠΌΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π²ΡΠ·ΡΠ²Π°Π΅Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ. ΠΡΠΎΠ±Π»Π΅ΠΌΠ° ΡΠ²ΡΠ·Π°Π½Π° Ρ ΡΠ΅ΠΌ, ΡΡΠΎ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅Ρ getThemedContext
ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ°ΠΊΠΆΠ΅ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ ΡΠ΅ΠΌΡ
<item name="android:editTextBackground"><strong i="17">@android</strong>:color/transparent</item>
ΠΠΎ ΡΡΠΎΠΉ ΠΏΡΠΈΡΠΈΠ½Π΅ Ρ ΡΡΠΈΡΠ°Ρ, ΡΡΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΈΡΠΊΠ°ΡΡ Π² ΡΠΎΠΌ, ΠΊΠ°ΠΊ React ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ ...
Π Π΅Π±ΡΡ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΡΡΠΊ ΡΠΏΠ°ΠΊΠΎΠ²ΡΠΈΠΊΠ° ΠΈ ΠΎΡΠΈΡΡΠΊΠ° ΠΊΠ΅ΡΠ° Ρ ΠΌΠ΅Π½Ρ ΡΡΠ°Π±ΠΎΡΠ°Π»ΠΈ!
ΠΠΎ ΡΡΠΎ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅, ΠΊΠ°ΠΊ Ρ ΠΌΠΎΠ³Ρ ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ ΡΡΠΎ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎΠ΅?
Π― ΠΏΠΎΠΏΡΡΠ°Π»ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π² java ΡΠ²Π΅Ρ ΡΠΎΠ½Π° Π½Π° ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΡΠΉ, Π½ΠΎ Π²ΡΠ΅ Π΅ΡΠ΅ Π²ΡΠ·ΡΠ²Π°Π΅Ρ ΠΎΡΠΈΠ±ΠΊΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ, ΡΡΠΎ Π·Π°ΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΌΠ΅Π½Ρ ΠΏΠΎΠ²Π΅ΡΠΈΡΡ Π² ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΠΉ Π½ΠΈΠΆΠ΅ ΠΊΠΎΠ΄
<item name="android:editTextBackground"><strong i="6">@android</strong>:color/transparent</item>
ΠΏΡΠΎΡΡΠΎ Π΄ΠΎΠΌΠΈΠ½ΠΈΡΡΡΡΠ°Ρ Π»ΠΎΠ³ΠΈΠΊΠ° ΠΎΡ
ΡΡΠΎ ΡΠ²Π½ΠΎ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΡΠΈΡΠΈΠ½ΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π² ΡΡΠ΅ΠΊΠ΅
ΠΡΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ ΠΎΡΠ²Π΅ΡΠ°Π΅Ρ Π·Π° Π½Π°ΡΡΡΠΎΠΉΠΊΡ ΡΡΠΈΠ»Ρ EditText,
ΠΡΠΎΠ±Π»Π΅ΠΌΠ° Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΈΡΡ
ΠΎΠ΄Π½ΡΠΉ ΡΡΠ΅ΠΊ Π·Π°Π΄Π°Ρ, ΠΏΠΎΡ
ΠΎΠΆΠ΅, ΠΈΠΌΠ΅Π΅Ρ Π΄ΡΡΠ³ΠΎΠΉ ΠΆΡΡΠ½Π°Π» ΠΈ Π½Π΅ ΡΠ²ΡΠ·Π°Π½ Ρ ΠΏΡΠΈΠ»Π°Π³Π°Π΅ΠΌΡΠΌ ΡΠ΅ΡΡΠΎΠ²ΡΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠΌ. ΠΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΠΉ Π½ΠΈΠΆΠ΅ ΡΡΠ΅ΠΊ Π²ΠΎΠ·Π½ΠΈΠΊ ΠΈΠ· ReactEditText.onTouchEvent
ΡΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΊΠ°ΡΠ°Π΅ΡΡΡ TextInput
ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ ΠΎΡΠΈΠ±ΠΊΠ°.
ΠΠ¨ΠΠΠΠ ΠΠ ΠΠΠΠΠΠΠ¬ΠΠΠΠ ΠΠ£Π ΠΠΠΠ
java.lang.NullPointerException:
tempt to invoke virtual method 'android.graphics.drawable.Drawable android.graphics.drawable.Drawable$ConstantState.newDrawable(android.content.res.Resources)' on a null object reference at
android.graphics.drawable.DrawableContainer$DrawableContainerState.getChild(DrawableContainer.java:888) at
android.graphics.drawable.DrawableContainer.selectDrawable(DrawableContainer.java:466) at
android.graphics.drawable.StateListDrawable.onStateChange(StateListDrawable.java:104) at
android.graphics.drawable.Drawable.setState(Drawable.java:735) at
android.graphics.drawable.DrawableWrapper.onStateChange(DrawableWrapper.java:331) at
android.graphics.drawable.Drawable.setState(Drawable.java:735) at
android.graphics.drawable.LayerDrawable.onStateChange(LayerDrawable.java:1488) at
android.graphics.drawable.Drawable.setState(Drawable.java:735) at
android.view.View.drawableStateChanged(View.java:18002) at
android.widget.TextView.drawableStateChanged(TextView.java:4097) at
android.view.View.refreshDrawableState(View.java:18071) at
android.view.View.setPressed(View.java:8543) at
android.view.View.setPressed(View.java:8521) at
android.view.View.onTouchEvent(View.java:11218) at
android.widget.TextView.onTouchEvent(TextView.java:8467) at
com.facebook.react.views.textinput.ReactEditText.onTouchEvent(ReactEditText.java:150)
ΠΡΡΠ³ΠΎΠΉ ΡΠΈΠΏ ΠΎΡΠΈΠ±ΠΎΠΊ https://github.com/facebook/react-native/issues/17530#issuecomment -376917781
ΠΠ Π£ΠΠΠ ΠΠ¨ΠΠΠΠ ΠΠ£Π ΠΠΠΠ
ΠΠ΅ΡΡΡΡΠ°Π½ΠΈΠΌΠΎΠ΅ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅: java.lang.NullPointerException: ΠΏΠΎΠΏΡΡΠΊΠ° Π²ΡΠ·Π²Π°ΡΡ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ android.graphics.drawable.Drawable android.graphics.drawable.Drawable $ ConstantState.newDrawable (android.content.res.Resources) Π΄Π»Ρ ΡΡΡΠ»ΠΊΠΈ Π½Π° Π½ΡΠ»Π΅Π²ΠΎΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ Π½Π° android .graphics.drawable.DrawableContainer $ DrawableContainerState.createAllFutures (DrawableContainer.java:875) Π² android.graphics.drawable.DrawableContainer $ DrawableContainerState.getOpacity (DrawableContainer.java:1158) Π² android.graphics Draw.drawable.java:1158) Π² android.graphics Draw.drawable.java: : 433) Π½Π° android.graphics.drawable.InsetDrawable.getOpacity (InsetDrawable.java:258) Π½Π° android.view.View.computeOpaqueFlags (View.java:16791) Π½Π° android.view.View.setBackgroundDrawable (View.java:21710) Π² android.view.View.setBackground (View.java:21603) Π² android.view.View.
Ρ Π΄ΡΡΠ³ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ, Ρ ΡΠΏΡΠ°ΡΠΈΠ²Π°Ρ ΡΠ΅Π±Ρ, ΡΠ²Π»ΡΠ΅ΡΡΡ Π»ΠΈ https://github.com/facebook/react-native/issues/17530#issuecomment -504044357 ΠΏΡΠΈΠ΅ΠΌΠ»Π΅ΠΌΡΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠΌ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΠ½ Π½Π΅ Π²ΡΠ·ΡΠ²Π°Π΅Ρ ΠΎΡΠΈΠ±ΠΊΡ Π²ΡΡΡΠ½ΡΡ, ΡΠ΅Π»ΠΊΠ°Ρ TextInput, Π° Π΄Π΅Π»Π°Π΅Ρ ΡΡΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎ ..
Π― ΡΠ²Π΅ΡΠ΅Π½, ΡΡΠΎ ΠΊΡΠΎ-ΡΠΎ ΠΈΠ· ΡΡΠ°ΡΡΠ½ΠΈΠΊΠΎΠ² ΡΡΠΎΠ³ΠΎ ΠΎΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΡ ΠΏΡΠΎΠ²Π΅Π΄Π΅Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π΅ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΡΠ΅ΡΠΈΡ ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ. ΠΠΎΠ»ΡΡΠΎΠ΅ ΡΠΏΠ°ΡΠΈΠ±ΠΎ ΠΈ ΡΠ΄Π°ΡΠΈ! : ΡΠΌΠ°ΠΉΠ»ΠΈΠΊ:
Π Π΅Π±ΡΡ, ΠΏΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅ Π΅ΡΠ΅ ΡΠ°Π· Π·Π°ΠΏΡΡΡΠΈΡΡ "npm install". Π£ ΠΌΠ΅Π½Ρ ΡΡΠΎ ΡΡΠ°Π±ΠΎΡΠ°Π»ΠΎ.
Π― ΠΏΡΠΎΠ±ΠΎΠ²Π°Π» Π΄ΠΎΠ±Π°Π²ΠΈΡΡ <item name="android:editTextBackground"><strong i="5">@android</strong>:color/transparent</item>
ΠΈ ΡΡΠΎ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠ°Π΅Ρ ΡΠ±ΠΎΠΉ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΎΠ΄Π½Π°ΠΊΠΎ ΡΠ΅ΠΊΡΡΠΎΠ²ΠΎΠ΅ ΠΏΠΎΠ»Π΅ ΠΏΡΠΎΡΡΠΎ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ ΠΌΠΈΠ³Π°ΡΡ ΠΌΠ΅ΠΆΠ΄Ρ Π±ΠΎΠ»ΡΡΠΈΠΌ ΠΈ ΠΌΠ°Π»Π΅Π½ΡΠΊΠΈΠΌ ΠΈ Π½Π΅ΠΏΡΠΈΠ³ΠΎΠ΄Π½ΠΎ Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ, Ρ ΠΊΠΎΠ³ΠΎ-Π½ΠΈΠ±ΡΠ΄Ρ Π΅ΡΠ΅ Π±ΡΠ»ΠΎ ΡΡΠΎ?
Π ΠΌΠΎΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΡΠΈΠ»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ, Ρ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Ρ ΠΈΠΌΡ ΡΠ΅ΠΊΠ²ΠΈΠ·ΠΈΡΠ° Β«ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΒ», Ρ Π΄ΡΠΌΠ°Ρ, ΡΡΠΎ ΡΡΠΎ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΠ΅, Ρ ΠΌΠ΅Π½ΡΡ Π½Π° Β«isRightΒ», ΡΠ΅ΡΠ°Ρ ΠΌΠΎΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ.
ΠΠΎΠ·ΡΠΌΠΈΡΠ΅ ΡΠ±ΠΎΡΠΊΡ ΡΠ΅Π»ΠΈΠ·Π° ΠΈ ΠΏΡΠΎΠ²Π΅ΡΡΡΠ΅ Π΅Π΅ Π½Π° ΡΡΠΎΠΌ apk, Π²Ρ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π²ΠΈΠ΄Π΅Π»ΠΈ ΡΡΠΎΠΉ ΠΎΡΠΈΠ±ΠΊΠΈ
ΠΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ ΡΠΎΠΎΠ±ΡΠ°Π΅Ρ ΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ΅, ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΠΎΠΉ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΎΡΡΠ΅ΡΠ° ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅ Π°Π½Π°Π»ΠΈΡΠΈΠΊΠΈ, Π° Π½Π΅ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅ Π² ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅, Ρ Π΄ΡΠΌΠ°Ρ, Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΠΎΡΡΠ΅Π΄ΠΎΡΠΎΡΠΈΡΡΡΡ.
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ ΠΎΠ±Π° Π²Π°ΡΠΈΠ°Π½ΡΠ°, Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ Π΄Π»Ρ Π²Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ:
ΠΏΠΎΡ ΠΎΠΆΠ΅, ΡΡΠΎ Π΅ΡΡΡ ΡΠ²ΡΠ·Π°Π½Π½Π°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°, ΠΎΡΠΊΡΡΡΠ°Ρ https://issuetracker.google.com/issues/37068452 Π² ΠΏΡΠΎΠ΅ΠΊΡΠ΅ Android
- Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Drawable, ΠΊΠΎΡΠΎΡΠ°Ρ Π½Π΅ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ getConstantState ().
- Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ LayerDrawable Ρ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠΎΠΌ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ° drawable Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π΄ΠΎΡΠ΅ΡΠ½Π΅Π³ΠΎ.
- ΠΡΠ·ΠΎΠ²ΠΈΡΠ΅ mutate () Π΄Π»Ρ LayerDrawable.
Drawable dummyDrawable = new Drawable() {
<strong i="12">@Override</strong>
public void draw(Canvas canvas) {
canvas.drawColor(Color.RED);
}
<strong i="13">@Override</strong> public void setAlpha(int alpha) {}
<strong i="14">@Override</strong> public void setColorFilter(ColorFilter cf) {}
<strong i="15">@Override</strong> public int getOpacity() { return 0; }
};
LayerDrawable layerDrawable = new LayerDrawable(new Drawable[] { dummyDrawable });
layerDrawable.mutate();
Π Π½Π°ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΎΡΠΈΠ±ΠΊΠ° Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΡΡ Π² ΡΡΠΎΠΉ ΡΡΡΠΎΠΊΠ΅ ΠΈΠ· ReactEditText
(Π½Π°ΡΠ»Π΅Π΄ΡΠ΅ΡΡΡ ΠΎΡ AppCompatEditText )
https://github.com/facebook/react-native/issues/17530#issuecomment -615131077
<TextInput style={styles.input} />
ΠΎΡΠΏΡΠ°Π²ΠΈΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΈΠ· ΡΡΠ΅Π΄Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ JavaScript Π² Android Π² Π²ΠΈΠ΄Π΅ JSON ΡΠ΅ΡΠ΅Π· ReactNativeBridge, API Android Java Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° View
ΠΈ ΡΠ°Π·Π΄ΡΡΡ (ΠΎΡΠΎΠ±ΡΠ°Π·ΠΈΡΡ) Π΅Π³ΠΎ Π½Π° ΡΠΊΡΠ°Π½Π΅.
ΠΠ½ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ Context
View
, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ°Π·Π΄ΡΠ²Π°Π΅Ρ ΠΌΠ°ΠΊΠ΅Ρ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ <TextInput />
, Π° Π·Π°ΡΠ΅ΠΌ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π·, ΠΊΠΎΠ³Π΄Π° ΠΌΡ ΠΌΠ΅Π½ΡΠ΅ΠΌ ΡΠ°ΠΊΡΡ ββΠΎΠΏΠΎΡΡ, ΠΊΠ°ΠΊ underlineColorAndroid
, ΠΌΡ Π²ΡΠ·ΠΎΠ²Π΅Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ Android API, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ. setUnderlineColorAndroid("red")
ΠΈ Android API ΠΏΠΎΠ·Π°Π±ΠΎΡΡΡΡΡ ΠΎΠ± ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ ΡΠ²Π΅ΡΠ° ΠΏΠΎΠ΄ΡΠ΅ΡΠΊΠΈΠ²Π°Π½ΠΈΡ <TextInput />
.
ΠΡΠ»ΠΈ 37068452 Π²ΡΠ·ΡΠ²Π°Π΅Ρ ΡΡΠ΅Π΄Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ, ΡΠΎΠ³Π΄Π° ΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ mutating()
a BackgroundDrawable
Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ² underlineColor
, Π½ΠΎ ΠΎΡΠΈΠ±ΠΊΠ° Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ Π² ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ΅ View
ΠΊΠΎΠ³Π΄Π° ΠΌΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΠΌ Context
.
Π― ΠΏΠΎΠΏΡΠΎΠ±ΡΡ ΠΎΡΠ»Π°Π΄ΠΈΡΡ ΡΡΠ΅ΠΊ Android, Π½ΠΎ ΡΠ½Π°ΡΠ°Π»Π° Ρ ΠΏΠΎΠΏΡΡΠ°ΡΡΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΡ Π½Π°ΡΡΠΎΡΡΠΈΠΉ ΠΏΡΠΈΠΌΠ΅Ρ Π² ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠΌΡΠΉ ΠΏΡΠΈΠΌΠ΅Ρ ΠΈ ΡΠ΄Π°Π»ΠΈΡΡ Π²ΡΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²Π°, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ ΡΠ²Π»ΡΡΡΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠΌΠΈ Π΄Π»Ρ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΡ ΠΎΡΠΈΠ±ΠΊΠΈ.
ΠΠ½Π΅ ΡΠ΄Π°Π»ΠΎΡΡ ΡΠΎΠ·Π΄Π°ΡΡ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΠΉ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠΌΡΠΉ ΠΏΡΠΈΠΌΠ΅Ρ.
ΠΡΠΎΠ±Π»Π΅ΠΌΠ° Π²ΡΠ·Π²Π°Π½Π° ΠΎΠΏΠΎΡΠΎΠΉ ΠΊΠ»ΡΡΠ° TextInput.
ΠΠΎΠ²ΡΠΎΡΠ½ΡΠΉ ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³ Π±ΠΎΠ»ΡΡΠΎΠ³ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² TextInput Ρ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠΉ ΠΎΠΏΠΎΡΠΎΠΉ Π²ΡΠ·ΠΎΠ²Π΅Ρ ΠΎΡΠΈΠ±ΠΊΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ.
ΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ TextInput
s ΠΊΠ°ΠΆΠ΅ΡΡΡ ΡΠ΅ΡΠ°ΡΡΠΈΠΌ Π΄Π»Ρ Π·Π°ΠΏΡΡΠΊΠ° ΡΠ±ΠΎΡ.
// Does not crash after testing for 5 minutes
for (let i = 0; i < 5; i++) { ..
// Crashes after 20 seconds
for (let i = 0; i < 100; i++) { ..
// Crashes after 1 second
for (let i = 0; i < 1000; i++) { ..
Π‘Π±ΠΎΠΉ Π½Π΅ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ, Π΅ΡΠ»ΠΈ Π²Ρ ΡΠ΄Π°Π»ΠΈΡΠ΅ ΠΎΠΏΠΎΡΡ ΠΊΠ»ΡΡΠ° TextInput
. Π― ΠΈΡΡΠ»Π΅Π΄ΡΡ ΠΈ ΠΏΠΎΠΏΡΡΠ°ΡΡΡ ΡΡΠΎ ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ. ΠΠ°ΠΏΡΡΡΠΈΡΠ΅ ΡΡΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΠΎΠ±Ρ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ Π΅Π³ΠΎ.
import * as React from "react";
import { View, TextInput } from "react-native";
class App extends React.Component{
state = { startKey: 0 };
componentDidMount() {
this.interval = setInterval(this.updateKey, 3000);
}
componentWillUnmount() {
clearInterval(this.interval);
}
updateKey = () => {
this.setState({
startKey: this.state.startKey + 100
});
};
render() {
const textInputs = [];
for (let i = 0; i < 100; i++) {
const key = (this.state.startKey + i).toString();
console.log("key", key);
// REMOVE KEY PROP TO FIX THIS
textInputs.push(
<TextInput key={key} />
);
}
return (
<View>
{ textInputs }
</View>
);
}
}
export default App;
Π’Π° ΠΆΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½Π° Ρ ΠΏΠΎΠΌΠΎΡΡΡ FlatList, Π΅ΡΠ»ΠΈ Π²Π°Ρ data
prop Π²ΠΊΠ»ΡΡΠ°Π΅Ρ key
, index
ΠΈΠ»ΠΈ id
ΠΊΠ°ΠΊ ΡΡΠΎ [{ key: "1"}, {key: "2"}, .. {key: "5000"}]
, Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ key
Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π΄Π»Ρ Π²Π°ΡΠ΅Π³ΠΎ ΡΠΏΠΈΡΠΊΠ° ΠΈ Π²ΡΠ·ΠΎΠ²Π΅Ρ ΡΡΠ΅Π΄Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ. Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ ΡΡΠΈΡ
ΠΊΠ»ΡΡΠ΅ΠΉ ΠΈΠ· ΠΌΠ°ΡΡΠΈΠ²Π° data
ΡΡΡΡΠ°Π½ΡΠ΅Ρ ΠΎΡΠΈΠ±ΠΊΡ ΠΈ ΡΠ΄Π°Π»ΡΠ΅Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΊΠ΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅.
import * as React from "react";
import { Text, FlatList, View, TextInput } from "react-native";
class App extends React.Component{
state = { startKey: 0 };
componentDidMount() {
this.interval = setInterval(this.updateKey, 3000);
}
componentWillUnmount() {
clearInterval(this.interval);
}
updateKey = () => {
this.setState({
startKey: this.state.startKey + 100
});
};
render() {
const textInputs = [];
for (let i = 0; i < 5000; i++) {
const notKey = (this.state.startKey + i).toString();
console.log("key", notKey);
// REMOVE KEY OR ID FIELD TO FIX THIS
// replacing notKey with key will trigger the runtime
textInputs.push(
{ notKey }
);
}
return (
<FlatList
data={textInputs}
renderItem={({item}) => <TextInput value={"testing"} />}
/>
);
}
}
export default App;
ΠΠ°ΠΆΠ΅ΡΡΡ, ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π²ΡΠ·Π²Π°Π½Π° ΡΡΠΎΠΉ ΡΡΡΠΎΠΊΠΎΠΉ ΠΊΠΎΠ΄Π°. Π― ΠΏΡΠΎΠΊΠΎΠΌΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π» ΡΡΡΠΎΠΊΡ ΠΈ Π·Π°ΠΌΠ΅Π½ΠΈΠ» Π΅Π΅ Π½Π° const key = 500;
ΠΈ ΠΎΡΠΈΠ±ΠΊΠ° Π½Π΅ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠ»Π°ΡΡ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ ..
ΠΡΠΈΠΌΠ΅Ρ: keyExtractor(item, ii)
Ρ item = {"key":"450"}
, ii = 50
ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ key = 450
Π²ΡΠ·ΠΎΠ²Π΅Ρ ΡΠ±ΠΎΠΉ, Π½ΠΎ Ρ ΡΡΠΈΡΠ°Ρ, ΡΡΠΎ ΡΡΠΎ Π½Π΅ Π½Π°ΡΡΠΎΡΡΠ°Ρ ΠΏΡΠΈΡΠΈΠ½Π°, Π° ΠΏΡΠΎΡΡΠΎ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π½Π° ΡΠΎ, ΡΡΠΎ ΠΊΠ»ΡΡ Π²ΡΠ·ΡΠ²Π°Π΅Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ. Π― Π±ΡΠ΄Ρ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡΡ Π² ΡΡΠΎΠΌ ΡΠ°Π·Π±ΠΈΡΠ°ΡΡΡΡ. Π― ΠΈΡΡ ΡΠ°Π±ΠΎΡΡ. ΠΠΎΠ»ΡΡΠΎΠ΅ ΡΠΏΠ°ΡΠΈΠ±ΠΎ. ΠΠ΅Π»Π°Ρ Π²Π°ΠΌ Ρ
ΠΎΡΠΎΡΠΈΡ
Π²ΡΡ
ΠΎΠ΄Π½ΡΡ
.
| Π‘Π ΠΠ ΠΠΠΠΠΠ |
|: -------------------------: |
| |
| ΠΠΠ Π ΠΠΠΠ’Π« |
|: -------------------------: |
| |
@ fabriziobertoglio1987 Π£ ΠΌΠ΅Π½Ρ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΡΠΉ Π²ΡΠ²ΠΎΠ΄ https://github.com/facebook/react-native/issues/17530#issuecomment -573934341, ΡΠΎ Π΅ΡΡΡ ΡΠ²ΡΠ·Π°Π½Π½ΡΠΉ Ρ ΠΏΠ΅ΡΠ΅ΠΌΠΎΠ½ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ / ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ΠΌ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° edittext. Π ΡΠΎ Π²ΡΠ΅ΠΌΡ Ρ Π½Π΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π», ΠΏΠΎΡΠ΅ΠΌΡ ΡΠ΅ΠΊΡΡΠΎΠ²ΡΠΉ Π²Π²ΠΎΠ΄ Π±ΡΠ΄Π΅Ρ Π²ΠΎΡΡΠΎΠ·Π΄Π°Π²Π°ΡΡ / Π²ΠΎΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡ, ΠΊΠΎΠ³Π΄Π° Ρ Π½ΠΈΡ , ΠΊΠ°Π·Π°Π»ΠΎΡΡ, Π½Π΅ Π±ΡΠ»ΠΎ ΠΏΡΠΈΡΠΈΠ½ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ. Π’Π΅ΠΏΠ΅ΡΡ ΠΏΠΎΡ ΠΎΠΆΠ΅, ΡΡΠΎ ΠΏΡΠΈΡΠΈΠ½ΠΎΠΉ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΊΠ»ΡΡΠΈ.
ΠΡΠΈΠ±ΠΊΠ° Π²ΡΠΊΠΈΠ΄ΡΠ²Π°Π΅Ρ ΠΎΡΡΡΠ΄Π°
Π³Π΄Π΅ ΠΌΠ°ΡΡΠΈΠ² mDrawableFutures
Π½Π΅ ΡΠ°Π²Π΅Π½ Π½ΡΠ»Ρ, Π½ΠΎ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ· Π΅Π³ΠΎ Π΄ΠΎΡΠ΅ΡΠ½ΠΈΡ
ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π½ΡΠ»Π΅Π²ΡΠΌΠΈ.
mDrawableFutures
ΠΌΠΎΠΆΠ½ΠΎ ΠΊΠ»ΠΎΠ½ΠΈΡΠΎΠ²Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΡ Π΄ΡΡΠ³ΠΈΡ
ΡΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΠΎΠ½ Π±ΡΠ» Π½Π΅Π½ΡΠ»Π΅Π²ΡΠΌ ΠΏΡΠΈ ΠΊΠ»ΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ, Π½ΠΎ ΠΊΠ°ΠΊΠΈΠΌ-ΡΠΎ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ· Π΅Π³ΠΎ Π΄ΠΎΡΠ΅ΡΠ½ΠΈΡ
ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π±ΡΠ»ΠΈ Π²ΠΏΠΎΡΠ»Π΅Π΄ΡΡΠ²ΠΈΠΈ ΡΠ½ΠΈΡΡΠΎΠΆΠ΅Π½Ρ.
Π― ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Ρ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅: ΠΊΠ»ΡΡΠ΅Π²ΡΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²Π° Π±ΡΠ΄ΡΡ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ ΠΏΡΠΎΡΠ΅ΡΡ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΡΠ΅Π½Π΅Π²ΡΠ΅ ΡΠ·Π»Ρ Π΄Π»Ρ ΡΠ΅ΠΊΡΡΠΎΠ²ΡΡ
Π²Ρ
ΠΎΠ΄ΠΎΠ². Π Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΡΡΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ° ΠΊΠ»ΠΎΠ½ΠΈΡΡΠ΅ΠΌΡΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ Π±ΡΠ΄ΡΡ ΠΊΠ»ΠΎΠ½ΠΈΡΠΎΠ²Π°Π½Ρ. ΠΠ΄Π½Π°ΠΊΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ Π³ΠΎΠ½ΠΊΠΈ / Π½Π΅Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½Π°Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠ½ΠΈΡΡΠΎΠΆΠΈΠ»Π° Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ· Π΄ΠΎΡΡΡΠΏΠ½ΡΡ
Π΄Π»Ρ ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΠΉ, ΠΏΠΎΠΊΠ° ΠΎΠ½ΠΈ Π²ΡΠ΅ Π΅ΡΠ΅ ΠΌΠΎΠ³ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ. @ fabriziobertoglio1987
ΠΠΎΠ»ΡΡΠΎΠ΅ ΡΠΏΠ°ΡΠΈΠ±ΠΎ ΠΎΡΠΏΡΠ°Π²ΠΈΡΡ Π·Π°ΠΏΡΠΎΡ Π½Π° ΠΏΠ΅ΡΠ΅Π½ΠΎΡ, ΡΡΠΎΠ±Ρ Π½Π°ΠΉΡΠΈ ΡΠ°Π±ΠΎΡΡ.
Π― ΡΡΠΈΡΠ°Ρ, ΡΡΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΡΠ²ΡΠ·Π°Π½Π° Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΠΌΠΈ Π³ΡΡΠ·Π½ΡΠΌΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌΠΈ, ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π½ΡΠΌΠΈ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ key
ΠΈ React.PureComponent.
ΠΡ ΠΏΡΠ°Π²Ρ, Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ ΡΡΠ° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° TextInput
. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π·Π°ΠΌΠ΅Π½Π° TextInput
Π½Π° Text
Π² renderItem
ΡΠ΅ΡΠΈΡ ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ.
<FlatList
renderItem={({item}) => <TextInput value={"testing"} />}
Π Π°Π·Π½ΠΈΡΠ° ΠΌΠ΅ΠΆΠ΄Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Text
ΠΈ TextInput
Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ const element
Π±ΡΠ΄Π΅Ρ ForwardRef
Ρ TextInput
. Π ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π½ΠΈΠΆΠ΅ ΡΠ»ΡΡΠ°Π΅ TextInput
ΡΠΎΠ·Π΄Π°Π΅Ρ ΡΡΠ΅Π΄Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΈ Π΄ΠΎΡΡΠΈΠΆΠ΅Π½ΠΈΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΊΠ»ΡΡΠ°. Π― ΡΠ°ΠΊΠΆΠ΅ ΡΠ΄Π°Π»ΠΈΠ» underlineColorAndroid="transparent"
ΠΈ ΡΡΠΎ Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΡΠΈΡΠΈΠ½ΠΎΠΉ ΠΎΡΠΈΠ±ΠΊΠΈ, Π½ΠΎ Ρ ΠΎΡΡΠ°Π²ΠΈΠ» ΡΡΠΎ Π² ΠΆΡΡΠ½Π°Π»Π°Ρ
Π½ΠΈΠΆΠ΅.
console.log("element", element);
//=> element <Text value="testing" />
//=> element <ForwardRef(TextInput) allowFontScaling={true} rejectResponderTermination={true} underlineColorAndroid="transparent" value="testing" />
TextInput Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ forwardRef
Π― ΡΡΠΈΡΠ°Ρ, ΡΡΠΎ ΠΌΠ΅ΡΠΎΠ΄ Π² Java API Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΠΈΠ· TextInput
javascript API, Π½ΠΎ Ρ ΠΎΡΡΡΡΡΡΠ²ΡΡΡΠΈΠΌΠΈ / Π³ΡΡΠ·Π½ΡΠΌΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌΠΈ. ΠΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠ·ΡΠ²Π°ΡΡ ΠΎΡΠΈΠ±ΠΊΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ NPE, Π½ΠΎ ΠΌΠ½Π΅ Π½ΡΠΆΠ½ΠΎ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ Π°ΡΠΏΠ΅ΠΊΡ API JS TextInput, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ½ΡΡΡ ΠΏΡΠΈΡΠΈΠ½Ρ.
Π― Π΄ΡΠΌΠ°Ρ, ΡΡΠΎ ΠΎΠΏΠΎΡΠ° key
Π²ΡΠ·ΡΠ²Π°Π΅Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·ΠΌ React
ΠΎΡΠ½ΠΎΠ²Π°Π½ Π½Π° ΡΡΠ°Π²Π½Π΅Π½ΠΈΠΈ ΠΎΠΏΠΎΡΡ key
, Π΅ΡΠ»ΠΈ ΠΎΡΡΡΡΡΡΠ²ΡΠ΅Ρ ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·ΠΌ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠΉ ΠΎΠΏΠΎΡΡ, ΡΠΎ Π½Π΅ ΠΊΠ΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅ ΠΎΡΡΡΡΡΡΠ²ΠΈΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ .
ΠΠ°Π²ΡΡΠ° Ρ ΠΏΠΎΠΏΡΡΠ°ΡΡΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΡΠΎΡΠΊΡ ΠΎΡΡΠ°Π½ΠΎΠ²Π° Π² Π²Π°ΡΠ΅ΠΌ ΠΊΠΎΠ΄Π΅, Π½Π° ΠΊΠΎΡΠΎΡΡΠΉ Π²Ρ ΡΡΡΠ»Π°Π»ΠΈΡΡ Π² ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΈ Π²ΡΡΠ΅.
ΠΠΎΠ»ΡΡΠΎΠ΅ ΡΠΏΠ°ΡΠΈΠ±ΠΎ Π·Π° ΠΏΠΎΠΌΠΎΡΡ. ΠΠ°Π΄Π΅ΡΡΡ, ΠΌΡ ΡΠΌΠΎΠΆΠ΅ΠΌ Π²ΠΌΠ΅ΡΡΠ΅ Π½Π°ΠΏΠΈΡΠ°ΡΡ Π·Π°ΠΏΡΠΎΡ Π½Π° ΡΠ»ΠΈΡΠ½ΠΈΠ΅ ΠΈ ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ. Π― ΠΆΠ΅Π»Π°Ρ Π²Π°ΠΌ Ρ ΠΎΡΠΎΡΠ΅Π³ΠΎ Π²Π΅ΡΠ΅ΡΠ°. Π€Π°Π±ΡΠΈΡΠΈΠΎ
@sunnylqm
Π‘ΠΠΠ¨ΠΠΠ ΠΠΠΠΠΠ ΠΠ Π§ΠΠ’ΠΠ’Π¬
Π― ΠΏΠΈΡΡ Π·Π°ΠΏΡΠΎΡ Π½Π° ΠΏΠ΅ΡΠ΅Π½ΠΎΡ, ΡΡΠΎΠ±Ρ ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ. ΠΡΠΏΡΠ°Π²ΠΈΡΡ ΠΎΡΠ΅Π½Ρ ΠΏΡΠΎΡΡΠΎ.
ΠΡΠΎΠ±Π»Π΅ΠΌΠ° Π²ΡΠ·Π²Π°Π½Π° Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ BackgroundDrawable ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΌ ΠΏΡΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ EditText.
Drawable - ΡΡΠΎ ΡΠΎΡ ΠΈΠ· ΡΠ΅ΠΌΡ, ΠΊΠΎΡΠΎΡΡΡ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ Theme.AppCompat.Light.NoActionBar
. ΠΠ·ΠΌΠ΅Π½ΠΈΡΡ Drawable ΠΌΠΎΠΆΠ½ΠΎ, ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ² XML-ΡΠ°ΠΉΠ»Ρ ΡΠ°Π±Π»ΠΎΠ½Π°, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠ΅ Π΄Π»Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ° Android, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΠ΅Π³ΠΎ ΡΠ΅Π°ΠΊΡΠΈΡ, Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ΅Π½Π°ΡΠΈΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ, Π²ΡΡΡΠΎΠ΅Π½Π½ΠΎΠ³ΠΎ Π² ΡΠ΅Π°ΠΊΡΠΈΡ.
Π― Π±ΡΠ΄Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π»ΠΈΠ±ΠΎ ΡΠΎΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΎΡ Android, Π»ΠΈΠ±ΠΎ ΡΠΎΠ·Π΄Π°ΠΌ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌΡΠΉ ΡΠ΅ΡΡΠ΅ΠΆ ΠΈ Π±ΡΠ΄Ρ Π²ΠΊΠ»ΡΡΠ°ΡΡ Π΅Π³ΠΎ Π² ΠΊΠ°ΠΆΠ΄ΡΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡΠ°.
<item name="android:editTextBackground"><strong i="18">@android</strong>:drawable/edit_text</item>
ΠΈΠ»ΠΈ ΠΆΠ΅
<item name="android:editTextBackground">@drawable/custom_background_drawable</item>
ΠΠΠΠΠΠΠ― ΠΠΠ Π‘ΠΠ―
Π¦ΠΈΡΠΈΡΡΡ sunnylqm https://github.com/facebook/react-native/issues/17530#issuecomment -660506001
Π― ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Ρ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅: ΠΊΠ»ΡΡΠ΅Π²ΡΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²Π° Π±ΡΠ΄ΡΡ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ ΠΏΡΠΎΡΠ΅ΡΡ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΡΠ΅Π½Π΅Π²ΡΠ΅ ΡΠ·Π»Ρ Π΄Π»Ρ ΡΠ΅ΠΊΡΡΠΎΠ²ΡΡ Π²Ρ ΠΎΠ΄ΠΎΠ². Π Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΡΡΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ° ΠΊΠ»ΠΎΠ½ΠΈΡΡΠ΅ΠΌΡΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ Π±ΡΠ΄ΡΡ ΠΊΠ»ΠΎΠ½ΠΈΡΠΎΠ²Π°Π½Ρ. ΠΠ΄Π½Π°ΠΊΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ Π³ΠΎΠ½ΠΊΠΈ / Π½Π΅Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½Π°Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠ½ΠΈΡΡΠΎΠΆΠΈΠ»Π° Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ· Π΄ΠΎΡΡΡΠΏΠ½ΡΡ Π΄Π»Ρ ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΠΉ, ΠΏΠΎΠΊΠ° ΠΎΠ½ΠΈ Π²ΡΠ΅ Π΅ΡΠ΅ ΠΌΠΎΠ³ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ.
ΠΡΠ° ΡΡΡΠΎΠΊΠ° android:editTextBackground
ΠΈΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ ΠΎΡΠΈΠ±ΠΊΡ, Π½ΠΎ Π§Π’Π ΡΡΠ° ΡΡΡΠΎΠΊΠ° Π΄Π΅Π»Π°Π΅Ρ Π² ReactNative?
1) AndroidManifest.xml
ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π΅Ρ android:theme="@style/AppTheme"
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.awesomeproject">
<uses-permission android:name="android.permission.INTERNET" />
<application
android:name=".MainApplication"
android:theme="@style/AppTheme">
2) ΠΠ΅Π½ΡΠ΅ΠΌ AppTheme
Π² res/values/styles.xml
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!-- Customize your theme here. -->
<item name="android:textColor">#000000</item>
<item name="android:editTextBackground"><strong i="22">@android</strong>:drawable/edit_text</item>
</style>
</resources>
3) ΠΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ EditText
Π²ΡΠ·ΠΎΠ²Π΅Ρ super(context)
. ΠΠ±ΡΠ΅ΠΊΡ context
Π²ΠΊΠ»ΡΡΠ°Π΅Ρ Π² ΡΠ΅Π±Ρ layout
ΠΈ theme
( AppTheme
).
ΠΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ View
ΠΏΠΎΠ»ΡΡΠΈΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΡΡΠΈΠ»Π΅ / ΡΠ΅ΠΌΠ΅ / ΠΌΠ°ΠΊΠ΅ΡΠ΅ ΠΈΠ· ΠΎΠ±ΡΠ΅ΠΊΡΠ° context
ΠΈ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ EditText
Ρ ΡΡΠΈΠΌΠΈ ΡΡΠΈΠ»ΡΠΌΠΈ (xml ΠΏΠΎΡ
ΠΎΠΆ Π½Π° html), ΡΠ°Π·Π΄ΡΠ²Π°Π΅Ρ Π΅Π³ΠΎ ΠΈ ΠΎΡΠΎΠ±ΡΠ°Π·ΠΈΡΡ Π΅Π³ΠΎ Π½Π° ΡΠΊΡΠ°Π½Π΅.
Android ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ xml, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ html, Π΄Π»Ρ ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³Π° ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠΉ, ΡΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ Java ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³Π° Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΊΠΎΠ½ΡΠ΅Π½ΡΠ° (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, JavaScript Π² ΠΠ½ΡΠ΅ΡΠ½Π΅ΡΠ΅).
4) ReactNative
ΡΡΡΠΎΠΈΡΡΡ ΠΏΠΎΠ²Π΅ΡΡ
Context
API, Π½ΠΎ Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΎΡ ΠΆΠ΅ ΡΠ°Π±Π»ΠΎΠ½ ΠΈΠ· 1-3.
ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠΉΡΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ° context
, Π·Π°ΡΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ JavaScript Π΄Π»Ρ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΡ
ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΡ Π½Π°ΠΏΡΡΠΌΡΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ context
, Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΌΠΎΡΡ react-native
ΡΠ΅ΡΠ΅Π· Android API.
| ΠΠ | ΠΠΠ‘ΠΠ | ΠΠΠ‘ΠΠ Ρ ΡΠ΅ΠΊΠ²ΠΈΠ·ΠΈΡΠ°ΠΌΠΈ Π² ΡΡΠΈΠ»Π΅ TextInput |
|: -------------------------: |: -------------------- -----: |: -------------------------: |
| | | |
Π― Π³ΠΎΡΠΎΠ²Π»Ρ Pull Request Π΄Π»Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Drawable ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠΎΠ³ΠΎ Π΄Π»Ρ EditText ΠΏΡΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ.
Drawable from Theme Theme.AppCompat.Light.NoActionBar Π²ΡΠ·ΡΠ²Π°Π΅Ρ ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, Π·Π°ΠΌΠ΅Π½Π° Π½Π° Π΄ΡΡΠ³ΠΎΠΉ drawable Π΄ΠΎΠ»ΠΆΠ½Π° ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ ΡΡΠΎ. ΠΡΠ΄Π²ΠΈΠΆΠ½ΠΎΠΉ <strong i="27">@android</strong>:drawable/edit_text
ΡΠ»ΠΈΡΠΊΠΎΠΌ Π²ΡΡΠΎΠΊ Π΄Π»Ρ Π½Π°ΡΠ΅Π³ΠΎ Π΄ΠΈΠ·Π°ΠΉΠ½Π°. Π ΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΈΠΉ Π²ΠΈΠ΄ Π°Π΄Π°ΠΏΡΠΈΡΡΠ΅ΡΡΡ ΠΊ Π²ΡΡΡΠΆΠ½ΠΎΠΉ Π²ΡΡΠΎΡΠ΅ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, Π΅ΡΠ»ΠΈ Π²ΡΡΠΎΡΠ° Π²ΡΡΠ΅ ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΎΠΉ. Π― ΡΡΠΈΡΠ°Ρ, ΡΡΠΎ ReactNative ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Ρ Π½ΠΈΠ·ΠΊΠΎΠΉ Π²ΡΡΠΎΡΠΎΠΉ, Π° Π·Π°ΡΠ΅ΠΌ Π°Π΄Π°ΠΏΡΠΈΡΡΠ΅Ρ Π΅Π³ΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ match_parent
ΠΊ ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΎΠΌΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ.
1) ΠΠΠ ΠΠΠΠ’ 1. ΠΠ°ΠΉΠ΄ΠΈΡΠ΅ ΡΠΈΡΡΠ½ΠΎΠΊ ΠΈΠ· Π΄ΡΡΠ³ΠΎΠΉ ΡΠ΅ΠΌΡ.
2) ΠΠΠ ΠΠΠΠ’ 2
Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ Π½ΠΎΠ²ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ Π΄Π»Ρ ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π² ΡΠ°Π±Π»ΠΎΠ½Π΅ response-native Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΡΠ°Π±Π»ΠΎΠ½Π°, Π΄ΠΎΡΡΡΠΏΠ½ΠΎΠ³ΠΎ Π² ΠΏΡΠΎΠ΅ΠΊΡΠ΅ Android, Ρ ΠΌΠ°Π»ΠΎΠΉ Π²ΡΡΠΎΡΠΎΠΉ Π΄Π»Ρ Π²ΡΠ΅Π³Π΄Π° match_parent View.
Π― Π΄ΠΎΠ±Π°Π²ΠΈΠ» Π² ΡΠ²ΠΎΠΉ ΠΏΡΠΎΠ΅ΠΊΡ Android ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠ΅ΡΡΠ΅ΠΆ Ρ Π²ΡΡΠΎΡΠΎΠΉ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΠΈΠΊΡΠ΅Π»Π΅ΠΉ
Π€ΠΎΠ½ Π΄Π»Ρ ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π°Π΄Π°ΠΏΡΠΈΡΡΠ΅ΡΡΡ ΠΊ Π΅Π³ΠΎ ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΎΠΉ Π²ΡΡΠΎΡΠ΅ ΠΏΡΠΎΡΠΌΠΎΡΡΠ° 10
Π€ΠΎΠ½ Π΄Π»Ρ ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π°Π΄Π°ΠΏΡΠΈΡΡΠ΅ΡΡΡ ΠΊ Π΅Π³ΠΎ ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΎΠΉ Π²ΡΡΠΎΡΠ΅ ΠΏΡΠΎΡΠΌΠΎΡΡΠ° 100
ΠΏΠΎΡ
ΠΎΠΆΠ΅, ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Ρ Π½Π΅Π±ΠΎΠ»ΡΡΠΈΠΌΠΈ ΡΠΎΠ½ΠΎΠ²ΡΠΌΠΈ ΡΠΈΡΡΠ½ΠΊΠ°ΠΌΠΈ, ΡΠΎΠ³Π΄Π° Π½Π°ΠΌ ΠΏΡΠΎΡΡΠΎ Π½ΡΠΆΠ΅Π½ ΡΡΠ΅Π½Π°ΡΠΈΠΉ react-native init
Π΄Π»Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΡΠΎΠ³ΠΎ ΡΠΎΠ½ΠΎΠ²ΠΎΠ³ΠΎ ΡΠΈΡΡΠ½ΠΊΠ° ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ. Π― Π΄ΠΎΠ±Π°Π²Π»Ρ ΠΎΠΏΠΈΡΠ°Π½Π½ΡΠ΅ Π²ΡΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² ΡΠ°ΠΉΠ»Ρ Π½ΠΈΠΆΠ΅ Π² Π·Π°ΠΏΡΠΎΡΠ΅ Π½Π° ΠΏΠ΅ΡΠ΅Π½ΠΎΡ.
ΠΠΎΠ»ΡΡΠΎΠ΅ ΡΠΏΠ°ΡΠΈΠ±ΠΎ. Π€Π°Π±ΡΠΈΡΠΈΠΎ
Π’Π° ΠΆΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Ρ RN 0.61.0 + Android API ΡΡΠΎΠ²Π½Ρ 28.
Π― ΡΡΠ·ΠΈΠ» Π΅Π³ΠΎ Π΄ΠΎ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΈ Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ Flatlist, TextInput ΠΈ Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΡ
ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ².
@ fabriziobertoglio1987 Π― ΠΏΡΠΎΠ±ΠΎΠ²Π°Π» ΡΡΠΎΡ ΡΠΏΠΎΡΠΎΠ±, Π½ΠΎ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Ρ ΠΏΡΠΎΠΏΡΡΡΠΈΠ» ΡΡΠΎ-ΡΠΎ, ΡΡΠΎ Ρ Π½Π΅ Π·Π°ΡΡΠ°Π²ΠΈΠ» Π΅Π³ΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡ. Π― ΠΌΠ°Π»ΠΎ Π·Π½Π°Ρ ΠΎΠ± Android ΠΈ ΡΠ°Π΄, ΡΡΠΎ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΡΠΎ ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ. ΠΠΎΠΊΠ° ΠΌΠ΅Π½Ρ Π²ΡΠ΅ Π΅ΡΠ΅ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΠ΅Ρ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠΉ Π²ΠΎΠΏΡΠΎΡ Ρ ΡΠ΅ΠΊΠ²ΠΈΠ·ΠΈΡΠΎΠΌ.
@ fabriziobertoglio1987 ΠΡΡΡ Π»ΠΈ
@ asmi24886, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°ΠΉΡΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π΄Π»Ρ Π½Π°Π΄Π΅ΠΆΠ½ΠΎΠ³ΠΎ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΡ ΡΡΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΈ ΠΎΠ±Ρ
ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡΡΡ Π½Π°ΡΠΈΠ²Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° / ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Π² ΠΌΠΎΠ΅ΠΌ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ Π·Π΄Π΅ΡΡ
Π― Π½Π΅ Π΄ΡΠΌΠ°Ρ, ΡΡΠΎ Π΅ΡΡΡ ΠΎΠ±Ρ
ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡΡΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΠΉ ΡΠΎΠ»ΡΠΊΠΎ ΠΊΠΎΠ΄ JS.
ΠΡΠΎ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠ΅Π³ΠΎ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅Π³ΠΎ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ https://github.com/facebook/react-native/issues/17530#issuecomment -660908150, ΠΌΠΎΠΈΡ ΡΡΠΈΠ»ΠΈΠΉ ΠΏΠΎ ΠΏΠΎΠΈΡΠΊΡ ΡΠ°Π±ΠΎΡΡ Π²Π½Π΅ΡΡΠ°ΡΠ½ΠΎΠ³ΠΎ ΡΠΎΡΡΡΠ΄Π½ΠΈΠΊΠ° ΠΈ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ Π·Π°ΠΏΡΠΎΡΠ° Π½Π° ΠΏΠ΅ΡΠ΅Π½ΠΎΡ, ΡΡΠΎΠ±Ρ Π·Π°ΠΊΡΡΡΡ ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ.
Π― ΡΠΎΠ·Π΄Π°Π» Π½Π°ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌΡΠΉ ΡΠ΅ΡΡΠ΅ΠΆ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Theme.AppCompat.Light
.
<inset xmlns:android="http://schemas.android.com/apk/res/android"
android:insetLeft="@dimen/abc_edit_text_inset_horizontal_material"
android:insetRight="@dimen/abc_edit_text_inset_horizontal_material"
android:insetTop="@dimen/abc_edit_text_inset_top_material"
android:insetBottom="@dimen/abc_edit_text_inset_bottom_material">
<selector>
<item android:state_enabled="false" android:drawable="@drawable/abc_textfield_default_mtrl_alpha"/>
<item android:state_pressed="false" android:state_focused="false" android:drawable="@drawable/abc_textfield_default_mtrl_alpha"/>
<item android:drawable="@drawable/abc_textfield_activated_mtrl_alpha"/>
</selector>
</inset>
Runtime Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΠΈΠ· ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ Π·Π°ΠΏΠΈΡΠΈ, Π΅ΡΠ»ΠΈ Ρ ΡΠ΄Π°Π»Ρ ΡΡΡ ΡΡΡΠΎΠΊΡ, ΡΠΎΡΠ½Π°Ρ ΠΊΠΎΠΏΠΈΡ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ Drawable ΠΈΠ· react-native
ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΈ Π½Π΅ Π²ΡΠ·ΠΎΠ²Π΅Ρ ΠΎΡΠΈΠ±ΠΊΡ Runtime. Π― Π²ΠΊΠ»ΡΡΠΈΠ» ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΠΉ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠΌΡΠΉ ΠΏΡΠΈΠΌΠ΅Ρ Π² ΡΠ²ΠΎΠΉ https://github.com/facebook/react-native/issues/17530#issuecomment -660017858
<item android:state_pressed="false" android:state_focused="false" android:drawable="@drawable/abc_textfield_default_mtrl_alpha"/>
Π― ΠΏΠΈΡΡ Π·Π°ΠΏΡΠΎΡ Π½Π° Π²ΡΡΡΠ³ΠΈΠ²Π°Π½ΠΈΠ΅, ΠΏΠΎΡΠ»Π΅ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ Π·Π°ΠΏΡΠΎΡΠ° Π½Π° ΠΈΠ·Π²Π»Π΅ΡΠ΅Π½ΠΈΠ΅ Π²Ρ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΏΠΎΠΌΠΎΡΠ½ΠΈΠΊΠ° ΠΏΠΎ
ΠΠ°ΠΏΡΠΎΡ Π½Π° ΠΈΠ·Π²Π»Π΅ΡΠ΅Π½ΠΈΠ΅ Π±ΡΠ΄Π΅Ρ Π²ΠΊΠ»ΡΡΠ°ΡΡ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ ΡΡΠΈΡ ΡΡΠ΅Π½Π°ΡΠΈΠ΅Π² Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ RNTester, ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² ΡΠ°Π±Π»ΠΎΠ½Π΅ ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π²ΡΡΠ΅ΡΠΏΠΎΠΌΡΠ½ΡΡΠΎΠ³ΠΎ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΡΡΠΎΠ±Ρ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ ΡΡΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ.
ΠΡΠΎ Π²ΠΈΠ΄Π΅ΠΎ, Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΡΡΡΠ΅Π΅ ΠΎΡΠΈΠ±ΠΊΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ, ΠΊΠΎΠ³Π΄Π° Drawable ΠΈΠΌΠ΅Π΅Ρ ΡΡΡΠΎΠΊΡ <item android:state_pressed="false" android:state_focused="false" android:drawable="@drawable/abc_textfield_default_mtrl_alpha"/>
ΠΡΠΎ Π²ΠΈΠ΄Π΅ΠΎ, Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΡΡΡΠ΅Π΅ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ (Π±Π΅Π· ΠΎΡΠΈΠ±ΠΎΠΊ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ), ΠΊΠΎΠ³Π΄Π° Drawable Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ ΡΡΡΠΎΠΊΠΈ <item android:state_pressed="false" android:state_focused="false" android:drawable="@drawable/abc_textfield_default_mtrl_alpha"/>
ΠΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° ΡΠ½ΠΈΠΌΠΊΠ΅ ΡΠΊΡΠ°Π½Π° Π½ΠΈΠΆΠ΅, Ρ ΠΏΡΠΎΡΡΠΎ ΡΠ΄Π°Π»ΡΡ ΡΠ»Π΅Π΄ΡΡΡΡΡ ΡΡΡΠΎΠΊΡ ΠΈΠ· ΡΠ°ΠΉΠ»Π° XML Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΡ ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ.
xml
<item android:state_pressed="false" android:state_focused="false" android:drawable="@drawable/abc_textfield_default_mtrl_alpha"/>
Π― Π½Π΅ ΠΌΠ΅Π½ΡΡ ΡΡΠΈΠ»Ρ. Drawable ΡΠΎΡ ΠΆΠ΅, ΡΡΠΎ ΠΈ Π² AppCompat, ΠΈ ΡΡΠΈΠ»Ρ Π±ΡΠ΄Π΅Ρ ΡΠ°ΠΊΠΈΠΌ ΠΆΠ΅, Π½ΠΎ ΠΎΠ½ Π½Π΅ Π²ΡΠ·ΠΎΠ²Π΅Ρ ΠΎΡΠΈΠ±ΠΊΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ.
ΠΠΎΡΡΠ°ΡΠ°ΡΡΡ Π·Π°Π²ΡΡΠ° ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°ΡΡ ΠΏΡΠ» ΡΠ΅ΠΊΠ²Π΅ΡΡ .
ΠΠΎΠ»ΡΡΠΎΠ΅ ΡΠΏΠ°ΡΠΈΠ±ΠΎ sunnylqm Π·Π° ΡΠΎΡΡΡΠ΄Π½ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠΎ ΠΌΠ½ΠΎΠΉ ΠΏΡΠΈ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈ https://github.com/facebook/react-native/pull/29452, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ΅ΡΠ°Π΅Ρ ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ.
ΠΠ°ΠΆΠ΅ΡΡΡ, Π΅ΡΡΡ ΠΎΡΠΈΠ±ΠΊΠ° Π² Drawable.mutate () Π½Π° Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΡΡΡΠΎΠΉΡΡΠ²Π°Ρ / Π²Π΅ΡΡΠΈΡΡ ΠΠ‘ Android Π΄Π°ΠΆΠ΅ ΠΏΠΎΡΠ»Π΅ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎΠ³ΠΎ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ. ΠΡΡ ΠΎΡΠΈΠ±ΠΊΡ ΡΡΡΠ΄Π½ΠΎ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ ΠΈ ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΏΡΠΎΡΡΠΎ ΠΏΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅ ΠΏΠ΅ΡΠ΅Ρ Π²Π°ΡΠΈΡΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅, ΡΡΠΎΠ±Ρ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠΈΡΡ ΡΠ±ΠΎΠΉ.
ΠΡΠΎΠ±Π»Π΅ΠΌΠ° Π²ΡΠ·Π²Π°Π½Π° ΡΡΠΎΠΉ ΡΡΡΠΎΠΊΠΎΠΉ Π² extras / android / support / v7 / appcompat / res / drawable / abc_edit_text_material.xml .
<item android:state_pressed="false" android:state_focused="false" android:drawable="@drawable/abc_textfield_default_mtrl_alpha"/>
ΠΡΡΠ΅ΡΠΏΠΎΠΌΡΠ½ΡΡΠ°Ρ ΡΡΡΠΎΠΊΠ° ΡΠΎΠ·Π΄Π°Π΅Ρ StateListDrawable, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅Ρ ΡΠΎΠ½ΠΎΠ²ΠΎΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ TextInput
(Background Drawable ) Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ TextInput
.
state_pressed="false"
ΠΈ state_focused="false"
Π²ΡΠ·ΠΎΠ²ΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ TextInput BackgroundDrawable. ΠΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π½Π΅ ΡΠ²Π»ΡΡΡΡΡ ΠΏΡΠΈΡΠΈΠ½ΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, Π½ΠΎ Ρ Π²ΠΊΠ»ΡΡΠΈΠ» ΠΈΡ
Π΄Π»Ρ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ.
| abc_textfield_activated_mtrl_alpha | abc_textfield_default_mtrl_alpha |
|: -------------------------: |: -------------------- -----: |
| | |
ΠΠ½ΡΡΡΠΈ DrawableContainer.getChild () ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ cs ConstantState ΡΠ°Π²Π½Π° null
. ΠΡΠ·ΠΎΠ² null.newDrawable(mSourceRes)
Π²ΡΠ·ΡΠ²Π°Π΅Ρ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π½ΡΠ»Π΅Π²ΠΎΠ³ΠΎ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ. ΠΡΠΎΡ Π²ΡΠ·ΠΎΠ² ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠΌ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ TextInput Π² ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠΈΡΠΎΠ²ΠΊΠ΅ ΡΡΠ΅ΠΊΠ° ΠΏΠΎΡΠ»Π΅ Π΅Π³ΠΎ Π½Π°ΠΆΠ°ΡΠΈΡ.
mDrawableFutures
Π½Π΅ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ Π·Π°ΠΏΠΈΡΠ΅ΠΉ https://github.com/facebook/react-native/pull/29452#issuecomment -662616018.
final ConstantState cs = mDrawableFutures.valueAt(keyIndex);
final Drawable prepared = prepareDrawable(cs.newDrawable(mSourceRes));
ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ Π² ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΡ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡ https://github.com/facebook/react-native/issues/17530#issuecomment -661174770 https://github.com/facebook/react-native/issues/17530#issuecomment -660908150 https: //github.com/facebook/react-native/issues/17530#issuecomment -660506001 https://github.com/facebook/react-native/issues/17530#issuecomment -660458191 https://github.com/facebook/ response-native / issues / 17530 # issuecomment -660017858 https://github.com/facebook/react-native/issues/17530#issuecomment -659422298 https://github.com/facebook/react-native/issues/17530# issuecomment -645851033 https://github.com/facebook/react-native/issues/17530#issuecomment -632795323
Π±ΠΎΠ»ΡΡΠΎΠ΅ ΡΠΏΠ°ΡΠΈΠ±ΠΎ
ΠΆΠ΅Π»Π°Ρ ΡΠ΅Π±Π΅ Ρ
ΠΎΡΠΎΡΠ΅Π³ΠΎ Π΄Π½Ρ
Π€Π°Π±ΡΠΈΡΠΈΠΎ
@ fabriziobertoglio1987 Π―Π²Π»ΡΠ΅ΡΡΡ Π»ΠΈ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΠΉ Π²ΡΡΠ΅ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ
@Coffeegerm ΠΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΠΉ Π²ΡΡΠ΅ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ https://github.com/facebook/react-native/issues/17530#issuecomment -662000718 - ΡΡΠΎ ΠΊΡΠ°ΡΠΊΠΎΠ΅ ΠΎΠ±ΡΡΡΠ½Π΅Π½ΠΈΠ΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΌΠΎΠΉ Π·Π°ΠΏΡΠΎΡ Π½Π° ΠΏΠ΅ΡΠ΅Π½ΠΎΡ https://github.com/facebook/react-native/pull / 29452 ΡΡΡΡΠ°Π½ΡΠ΅Ρ ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ. ΠΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π·Π°ΠΏΡΠΎΡ Π½Π° ΠΏΠ΅ΡΠ΅Π½ΠΎΡ Π±ΡΠ΄Π΅Ρ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ Π² react-native
1) Π Π½ΠΎΠ²ΡΡ
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ
ΡΡΠΎΠΉ ΠΎΡΠΈΠ±ΠΊΠΈ Π½Π΅ Π±ΡΠ΄Π΅Ρ
2) Π‘ΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΎΠ±Π½ΠΎΠ²ΡΡΡΡ, ΠΈ Π² Π½ΠΈΡ
Π½Π΅ Π±ΡΠ΄Π΅Ρ ΠΎΡΠΈΠ±ΠΎΠΊ. Π£Π·Π½Π°ΠΉΡΠ΅ Π±ΠΎΠ»ΡΡΠ΅ ΠΎΠ± ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ ΠΏΡΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ # 3-upgrade-your-project-files, ΡΡΠΎΠ±Ρ ΡΠ·Π½Π°ΡΡ Π±ΠΎΠ»ΡΡΠ΅ ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² ΠΏΠ°ΠΏΠΊΠ΅ /android
ΠΏΡΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
ΠΡΠ»ΠΈ Π²Ρ Π½Π΅ Ρ
ΠΎΡΠΈΡΠ΅ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡΡΡΡ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ ΠΌΠΎΠΉ PR https://github.com/facebook/react-native/pull/29452 ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΡΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² ΠΏΠ°ΠΏΠΊΡ Π²Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ° android
. ΠΠ°ΠΌ Π½Π΅ Π½ΡΠΆΠ½ΠΎ Π²Π½ΠΎΡΠΈΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² ΠΈΡΡ
ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄ react-native
, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΠΈΠ· ΡΡΠΎΠ³ΠΎ PR Π½Π°Ρ
ΠΎΠ΄ΡΡΡΡ Π½Π΅ Π² ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠΉ Π±Π°Π·Π΅ /ReactAndroid
Java, Π° Π² ΡΠ°Π±Π»ΠΎΠ½Π΅ Android
ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠΎΠΌ Π΄Π»Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΡΠΎΠ΅ΠΊΡ.
Π Π½Π°ΡΡΠΎΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ Ρ ΡΠ°Π±ΠΎΡΠ°Ρ Π½Π°Π΄ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°ΠΌΠΈ, Π½ΠΎ Ρ Π²Π΅ΡΠ½ΡΡΡ, ΠΎΡΠ²Π΅ΡΡ Π½Π° Π»ΡΠ±ΡΠ΅ ΠΎΡΠ·ΡΠ²Ρ ΠΈ Π²Π½Π΅ΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ ΡΠ»ΡΡΡΠ΅Π½ΠΈΡ Π² ΡΠ²ΠΎΠΉ Π·Π°ΠΏΡΠΎΡ Π½Π° ΡΠ»ΠΈΡΠ½ΠΈΠ΅.
ΠΠΎΠΆΠ°Π»ΡΠΉΡΡΠ°, Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΠΉΡΠ΅ΡΡ ΠΊΠΎ ΠΌΠ½Π΅ Ρ Π»ΡΠ±ΡΠΌΠΈ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΡΠΌΠΈ ΠΏΠΎ ΡΠ»ΡΡΡΠ΅Π½ΠΈΡ ΠΈ ΠΎΡΠ·ΡΠ²Π°ΠΌΠΈ.
ΠΠ΅Π»Π°Ρ Π²Π°ΠΌ Ρ
ΠΎΡΠΎΡΠΈΡ
Π²ΡΡ
ΠΎΠ΄Π½ΡΡ
ΠΠΎΠ»ΡΡΠΎΠ΅ ΡΠΏΠ°ΡΠΈΠ±ΠΎ Π·Π° ΡΠ²ΠΎΡ ΠΏΠΎΠΌΠΎΡΡ
Π€Π°Π±ΡΠΈΡΠΈΠΎ
Π’ΠΎΠ»ΡΠΊΠΎ ΡΡΠΎ ΡΠ²ΠΈΠ΄Π΅Π» ΠΊΠΎΠΌΠΌΠΈΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π·Π²ΡΡΠΈΡ ΠΊΠ°ΠΊ ΡΠ²ΡΠ·Π°Π½Π½ΡΠΉ https://github.com/facebook/react-native/commit/1e4d8d902daca8e524ba67fc3c1f4b77698c4d08
ΠΌΡ Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π»ΠΈ ΡΠ»ΠΈΡΠΊΠΎΠΌ ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Create + Delete, ΠΊΠΎΡΠΎΡΡΠ΅ Π±ΡΠ»ΠΈ ΠΈΠ·Π±ΡΡΠΎΡΠ½ΡΠΌΠΈ ΠΈ ΠΌΠΎΠ³Π»ΠΈ Π²ΡΠ·Π²Π°ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Ρ ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½Π½ΠΎΡΡΡΡ, ΡΠ±ΠΎΠΈ ΠΈΠ»ΠΈ ΠΎΡΠΈΠ±ΠΊΠΈ Π½Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°Ρ , ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ ΡΡΠΎ ΠΈΠ·ΡΡΠ½ΠΎ -
ΡΠ΅ΠΌ Π±ΠΎΠ»Π΅Π΅, ΡΡΠΎ ΠΏΠΎΡΡΠ΄ΠΎΠΊ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ Create + Delete Π½Π΅ Π³Π°ΡΠ°Π½ΡΠΈΡΡΠ΅ΡΡΡ (Π½ΠΎΠ²ΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠΎΠ·Π΄Π°Π½ΠΎ Β«ΠΏΠ΅ΡΠ²ΡΠΌΒ», Π° Π·Π°ΡΠ΅ΠΌ ΡΠ°Π·Π»ΠΈΡΠ½ΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠ·Π²Π°ΡΡ Β«ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅Β» Π΄Π»Ρ ΡΠΎΠ³ΠΎ ΠΆΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ).
@ fabriziobertoglio1987
ΠΡΡΡ ΠΈΠ΄Π΅ΠΈ, ΠΊΠ°ΠΊ ΠΊΡΠΎ-ΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Expo, ΠΏΠΎΡΡΠΎΠΌΡ Π±Π΅Π· Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΠΏΠ°ΠΏΠΊΠ΅ Android ΠΏΡΠΎΠ΅ΠΊΡΠ°? π
@divonelnc Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΎΠ±Ρ ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡΡΡ: ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Π½ΠΎΠ²ΡΠΉ ΠΊΠ»ΡΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π·, ΠΊΠΎΠ³Π΄Π° Π²Π²ΠΎΠ΄ΠΈΡΡΡ ΡΠ΅ΠΊΡΡΠΎΠ²ΡΠΉ Π²Π²ΠΎΠ΄, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ,
<TextInput key={Math.random()} />
Π, ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ ΠΆΠ΅, ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠ·Π²Π°ΡΡ Π΄ΡΡΠ³ΠΈΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΈ ΠΏΠΎΡΠ΅ΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ.
@sunnylqm Π ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡ, ΡΡΠΎ Π½Π΅ ΠΏΠΎΠΌΠΎΠ³Π»ΠΎ π. Π£ ΠΌΠ΅Π½Ρ Π΄ΠΎ ΡΠΈΡ ΠΏΠΎΡ ΡΠ»ΡΡΠ°Π΅ΡΡΡ ΡΠ»ΡΡΠ°ΠΉΠ½ΡΠΉ ΡΠ±ΠΎΠΉ Π½Π° ΡΠΊΡΠ°Π½Π΅ Ρ Π΄Π΅ΡΡΡΠΊΠ°ΠΌΠΈ Π²Π²ΠΎΠ΄ΠΈΠΌΡΡ ΡΠ΅ΠΊΡΡΠ°.
Π― ΠΌΠΎΠ³Ρ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠ΄ΠΈΡΡ ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π² ΠΡΠΎΠ΄Π°ΠΊΡΠ΅Π½Π΅! Π Π: 0,62,2 π
Π’Π° ΠΆΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π° Π² RN 0.63.2 :(
ΠΡΠ° ΡΠΈΠΊΡΠ°ΡΠΈΡ ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ:
https://github.com/facebook/react-native/commit/a5b5d1a805a9c54d325763b432be1cf2c8811dc9
Π’Π° ΠΆΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Ρ Expo ΠΈ RN sdk https://github.com/expo/react-native/archive/sdk-38.0.2.tar.gz
ΠΠ°Ρ, ΡΡΠΎ Π±ΡΠ»ΠΎ Π½Π΅ΠΏΡΠΈΡΡΠ½ΠΎ. @WilliamAlexander @Hopding ΡΠ°Π±ΠΎΡΠ°Π΅Ρ. Π― Π·Π½Π°Ρ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΡΠ°Π½ΡΡΠ΅ ΠΌΠΎΠ³ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π· Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡ ΡΡΠΎ.
// styles.xml
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!-- Customize your theme here. -->
<item name="android:editTextStyle">@style/AppEditTextStyle</item>
<item name="editTextStyle">@style/AppEditTextStyle</item> <!-- For compatibility with the support library -->
<item name="android:editTextBackground"><strong i="9">@android</strong>:color/transparent</item>
</style>
<style name="AppEditTextStyle" parent="@style/Widget.AppCompat.EditText">
<item name="android:background"><strong i="10">@android</strong>:color/transparent</item>
</style>
</resources>
ΠΠΎΡ Π½Π΅ΠΏΠ»ΠΎΡ ΠΎΠΉ ΠΎΠ±Ρ ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡΡΡ. Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΡ Π΄Π»Ρ Π»ΡΠ±ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° Π²Π²ΠΎΠ΄Π° ΡΠ΅ΠΊΡΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ Π²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅, ΠΈ ΡΠ³Π΅Π½Π΅ΡΠΈΡΡΠΉΡΠ΅ Π΄Π»Ρ Π½Π΅Π³ΠΎ ΠΊΠ»ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ useMemo. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΎΠ΄ΠΈΠ½ Π²Π²ΠΎΠ΄ ΡΠ΅ΠΊΡΡΠ° Π²ΡΠ΅Π³Π΄Π° Π±ΡΠ΄Π΅Ρ ΠΈΠΌΠ΅ΡΡ ΠΎΠ΄ΠΈΠ½ ΠΈ ΡΠΎΡ ΠΆΠ΅ ΠΊΠ»ΡΡ ΠΏΡΠΈ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎΠΌ ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³Π΅, ΠΈ Π²Π°ΠΌ ΡΠ°ΠΊΠΆΠ΅ Π½Π΅ Π½ΡΠΆΠ½ΠΎ ΠΏΠΈΡΠ°ΡΡ ΠΊΠ»ΡΡΠΈ Π΄Π»Ρ Π²ΡΠ΅Ρ Π²Π²ΠΎΠ΄ΠΈΠΌΡΡ Π²Π°ΠΌΠΈ ΡΠ΅ΠΊΡΡΠΎΠ².
export default (props: TextInputProps) => {
const key = useMemo(() => {
return Math.random().toString()
}, [])
return (
<TextInput key={key} {...props} />
)
}
ΠΡΠ»ΠΈ Π²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ expo
Π― ΠΏΠΎΠ»ΡΡΠΈΠ» ΡΡΡ ΠΎΡΠΈΠ±ΠΊΡ ΠΏΠΎΡΠ»Π΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ Ρ expo SDK 38 Π΄ΠΎ 39.
ΠΠ½Π΅ ΠΏΡΠΈΡΠ»ΠΎΡΡ ΠΎΡΠΈΡΡΠΈΡΡ ΠΊΠ°ΠΊ ΠΌΠΎΠΉ ΠΊΠ΅Ρ expo (expo -rc), ΡΠ°ΠΊ ΠΈ ΠΊΠ΅Ρ ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ expo (Ρ ΡΠ΄Π°Π»ΡΡ ΠΈ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Ρ Π΅Π³ΠΎ, ΡΡΠΎΠ±Ρ Π±ΡΡΡ ΡΠ²Π΅ΡΠ΅Π½Π½ΡΠΌ), ΠΈ ΠΎΡΠΈΠ±ΠΊΠ° ΠΈΡΡΠ΅Π·Π»Π°.
@dpnick ΠΎΡΠΈΠ±ΠΊΡ ΠΎΡΠ΅Π½Ρ ΡΠ»ΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ. Π― ΠΏΡΠ΅Π΄Π»Π°Π³Π°Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠΉ Ρ ΡΠ°Π·ΠΌΠ΅ΡΡΠΈΠ» Π·Π΄Π΅ΡΡ, ΡΡΠΎΠ±Ρ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ, ΡΡΠΎ ΠΎΠ½ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΏΡΠΎΡΠ΅Π».
ΠΠΎΠ»ΡΡΠΈΠ² ΡΡΡ ΠΎΡΠΈΠ±ΠΊΡ Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π°, ΠΈ Ρ Π½Π΅ ΠΌΠΎΠ³Ρ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, ΠΌΠΎΡ Π²Π΅ΡΡΠΈΡ RN - 0.62.2, Π²ΠΎΡ ΠΌΠΎΠΈ ΠΆΡΡΠ½Π°Π»Ρ ΠΈΠ· firebase crashlytics:
Fatal Exception: java.lang.NullPointerException: Attempt to invoke virtual method 'android.graphics.drawable.Drawable android.graphics.drawable.Drawable$ConstantState.newDrawable(android.content.res.Resources)' on a null object reference
at android.graphics.drawable.DrawableContainer$DrawableContainerState.createAllFutures(DrawableContainer.java:880)
at android.graphics.drawable.DrawableContainer$DrawableContainerState.getOpacity(DrawableContainer.java:1163)
at android.graphics.drawable.DrawableContainer.getOpacity(DrawableContainer.java:434)
at android.graphics.drawable.InsetDrawable.getOpacity(InsetDrawable.java:259)
at android.view.View.computeOpaqueFlags(View.java:19424)
at android.view.View.setBackgroundDrawable(View.java:24701)
at android.view.View.setBackground(View.java:24594)
at android.view.View.<init>(View.java:6191)
at android.widget.TextView.<init>(TextView.java:1223)
at android.widget.EditText.<init>(EditText.java:106)
at android.widget.EditText.<init>(EditText.java:102)
at android.widget.EditText.<init>(EditText.java:98)
at android.widget.EditText.<init>(EditText.java:94)
at com.facebook.react.views.textinput.ReactTextInputShadowNode.createInternalEditText(ReactTextInputShadowNode.java:258)
at com.facebook.react.views.textinput.ReactTextInputShadowNode.setThemedContext(ReactTextInputShadowNode.java:78)
at com.facebook.react.uimanager.UIImplementation.createView(UIImplementation.java:243)
at com.facebook.react.uimanager.UIManagerModule.createView(UIManagerModule.java:469)
at java.lang.reflect.Method.invoke(Method.java)
at com.facebook.react.bridge.JavaMethodWrapper.invoke(JavaMethodWrapper.java:372)
at com.facebook.react.bridge.JavaModuleWrapper.invoke(JavaModuleWrapper.java:151)
at com.facebook.react.bridge.queue.NativeRunnable.run(NativeRunnable.java)
at android.os.Handler.handleCallback(Handler.java:883)
at android.os.Handler.dispatchMessage(Handler.java:100)
at com.facebook.react.bridge.queue.MessageQueueThreadHandler.dispatchMessage(MessageQueueThreadHandler.java:27)
at android.os.Looper.loop(Looper.java:237)
at com.facebook.react.bridge.queue.MessageQueueThreadImpl$4.run(MessageQueueThreadImpl.java:226)
at java.lang.Thread.run(Thread.java:919)
@AbdelkhalekESI - ΠΎΡΠΈΠ±ΠΊΡ ΠΎΡΠ΅Π½Ρ ΡΠ»ΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ. ΠΡ ΠΏΡΠΎΠ±ΠΎΠ²Π°Π»ΠΈ ΡΠ΅ΡΡΠΎΠ²ΡΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ, ΠΊΠΎΡΠΎΡΡΠΉ Ρ ΡΠ°Π·ΠΌΠ΅ΡΡΠΈΠ» Π·Π΄Π΅ΡΡ ?
Π― Π½Π°ΠΏΠΈΡΠ°Π» Π·Π°ΠΏΡΠΎΡ Π½Π° ΠΏΠ΅ΡΠ΅Π½ΠΎΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΡΡΡΠ°Π½ΡΠ΅Ρ ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ https://github.com/facebook/react-native/issues/17530#issuecomment -663577143
ΠΠ΅ΡΠ΅ΠΉΠ΄ΠΈΡΠ΅ Π½Π° ΡΡΡΠ°Π½ΠΈΡΡ pr https://github.com/facebook/react-native/pull/29452, ΡΠ»Π΅Π΄ΡΠΉΡΠ΅ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡΠΌ https://github.com/facebook/react-native/wiki/Building-from-source#publish - your-own-version-of-react-native ΠΈ Π΄Π°ΠΉΡΠ΅ ΠΌΠ½Π΅ Π·Π½Π°ΡΡ, Π΅ΡΠ»ΠΈ Π²Π°ΠΌ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡ ΠΏΠΎΠΌΠΎΡΡ. Π― ΠΏΠΎΠΏΡΡΠ°ΡΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ Π² ΡΡΠΈ Π²ΡΡ ΠΎΠ΄Π½ΡΠ΅, Π½ΡΠΆΠ½ΠΎ Π»ΠΈ ΠΏΠΈΡΠ°ΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ PR Π΄Π»Ρ Expo, Π½ΠΎ Ρ ΡΡΠΈΡΠ°Ρ, ΡΡΠΎ ΠΎΠ½ΠΈ ΠΏΡΠΎΡΡΠΎ ΠΏΠΎΠ»ΡΡΠ°Ρ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅, ΠΎΠ±Π½ΠΎΠ²ΠΈΠ² reactnative, ΠΊΠ°ΠΊ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠΎΡ PR Π±ΡΠ΄Π΅Ρ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ ΠΈ Π²ΡΠΏΡΡΠ΅Π½. ΠΠΎΠ»ΡΡΠΎΠ΅ ΡΠΏΠ°ΡΠΈΠ±ΠΎ. Π― ΠΆΠ΅Π»Π°Ρ ΡΠ΅Π±Π΅ ΡΠΏΠΎΠΊΠΎΠΉΠ½ΠΎΠΉ Π½ΠΎΡΠΈ
ΠΏΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ Π² ΠΌΠΎΠΈΡ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡΡ https://github.com/facebook/react-native/issues/17530#issuecomment -662000718
Π’Π° ΠΆΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π² Π²Π΅ΡΡΠΈΠΈ "react-native": "0.63.3"
ΠΏΡΠΎΡΡΠΎ ΠΎΡΠΈΡΡΠΈΡΠ΅ ΠΊΠ΅Ρ Expo Π² ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΠΎΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ (Π΅ΡΠ»ΠΈ Π²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅) ΠΈΠ»ΠΈ ΠΊΠ΅Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Expo Π½Π° Π»ΡΠ±ΠΎΠΉ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅, ΠΊΠΎΡΠΎΡΡΡ Π²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅.
@ tzeneng96 Ρ ΠΎΡΠΎΡΠΎ, ΠΎΡΠΈΡΡΠΊΠ° ΠΊΠ΅ΡΠ° ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ, Π½ΠΎ ΡΡΠΎ Π½Π΅ΠΏΡΠΈΠ΅ΠΌΠ»Π΅ΠΌΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΠΏΠΎΠ²ΡΠΎΡΡΠ΅ΡΡΡ!
@AbdelkhalekESI - ΠΎΡΠΈΠ±ΠΊΡ ΠΎΡΠ΅Π½Ρ ΡΠ»ΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ. ΠΡ ΠΏΡΠΎΠ±ΠΎΠ²Π°Π»ΠΈ ΡΠ΅ΡΡΠΎΠ²ΡΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ, ΠΊΠΎΡΠΎΡΡΠΉ Ρ ΡΠ°Π·ΠΌΠ΅ΡΡΠΈΠ» Π·Π΄Π΅ΡΡ ?
Π― ΡΠΌΠΎΠ³ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ ΡΡΡ ΠΎΡΠΈΠ±ΠΊΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°. Π― ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΎΠ»ΡΡΠΈΠ» ΠΌΠ½ΠΎΠ³ΠΎ ΠΆΡΡΠ½Π°Π»ΠΎΠ² ΡΡΠΎΠ³ΠΎ ΡΠ±ΠΎΡ Π² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π΅. Π Π½Π°ΡΡΠΎΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ ΠΏΡΠΎΠ΅ΠΊΡ ΠΈΠΌΠ΅Π΅Ρ Π²Π΅ΡΡΠΈΡ 0.63.3.
ΠΠ΅ Π·Π½Π°Ρ, ΠΎΡΠΈΠ±ΡΡ Π»ΠΈ Ρ, Π½ΠΎ Π² ΡΡΠΎΠΉ ΡΠ΅ΠΌΠ΅, ΡΠΈΡΠΈΡΡΠ΅ΠΌΠΎΠΉ @ glenn-axsy, Π½Π°ΡΠΊΠΎΠ»ΡΠΊΠΎ Ρ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ, ΠΈΠΌ ΡΠ΄Π°Π»ΠΎΡΡ ΡΠ΅ΡΠΈΡΡ, Π΄ΠΎΠ±Π°Π²ΠΈΠ² Π² andoid \ app \ src \ main \ res \ values ββ\ styles.xml ΠΏΡΠ΅Π΄ΠΌΠ΅Ρ:
"item name =" android: editTextBackground "> @ android: color / transparent / item"
Π― Π²ΡΠ΅ Π΅ΡΠ΅ ΡΠ΅ΡΡΠΈΡΡΡ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅.
@thiagocristianno, Π²Ρ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ ΠΏΠΎΠ½ΡΠ»ΠΈ, Ρ ΠΎΡΡ ΡΡΠΎ Π½Π΅ ΠΈΠ΄Π΅Π°Π»ΡΠ½ΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅, ΠΈ Ρ ΡΡΠΈΡΠ°Ρ, ΡΡΠΎ ΡΡΠΎ Π½Π΅ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ Expo, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΠ½ΠΈ Π½Π΅ ΠΌΠΎΠ³ΡΡ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΡΡΡ Π½Π°ΡΡΡΠΎΠΉΠΊΡ.
ΠΠ°Ρ, ΡΡΠΎ Π±ΡΠ»ΠΎ Π½Π΅ΠΏΡΠΈΡΡΠ½ΠΎ. @WilliamAlexander @Hopding ΡΠ°Π±ΠΎΡΠ°Π΅Ρ. Π― Π·Π½Π°Ρ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΡΠ°Π½ΡΡΠ΅ ΠΌΠΎΠ³ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π· Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡ ΡΡΠΎ.
// styles.xml<resources> <!-- Base application theme. --> <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> <!-- Customize your theme here. --> <item name="android:editTextStyle">@style/AppEditTextStyle</item> <item name="editTextStyle">@style/AppEditTextStyle</item> <!-- For compatibility with the support library --> <item name="android:editTextBackground"><strong i="10">@android</strong>:color/transparent</item> </style> <style name="AppEditTextStyle" parent="@style/Widget.AppCompat.EditText"> <item name="android:background"><strong i="11">@android</strong>:color/transparent</item> </style> </resources>
@ @jordangrant , Π³Π΄Π΅ Π²Ρ Π²ΠΈΠ΄Π΅Π»ΠΈ ΠΎΠ±Ρ ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡΡΡ?
ΠΠ°Ρ, ΡΡΠΎ Π±ΡΠ»ΠΎ Π½Π΅ΠΏΡΠΈΡΡΠ½ΠΎ. @WilliamAlexander @Hopding ΡΠ°Π±ΠΎΡΠ°Π΅Ρ. Π― Π·Π½Π°Ρ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΡΠ°Π½ΡΡΠ΅ ΠΌΠΎΠ³ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π· Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡ ΡΡΠΎ.
// styles.xml<resources> <!-- Base application theme. --> <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> <!-- Customize your theme here. --> <item name="android:editTextStyle">@style/AppEditTextStyle</item> <item name="editTextStyle">@style/AppEditTextStyle</item> <!-- For compatibility with the support library --> <item name="android:editTextBackground"><strong i="11">@android</strong>:color/transparent</item> </style> <style name="AppEditTextStyle" parent="@style/Widget.AppCompat.EditText"> <item name="android:background"><strong i="12">@android</strong>:color/transparent</item> </style> </resources>
@ @jordangrant , Π³Π΄Π΅ Π²Ρ Π²ΠΈΠ΄Π΅Π»ΠΈ ΠΎΠ±Ρ ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡΡΡ?
@bobowinca ΠΡΠΎ ΠΎΡΠ΅Π½Ρ Π΄Π»ΠΈΠ½Π½ΡΠΉ ΠΏΠΎΡΠΎΠΊ, ΠΈ ΡΡΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π½Π° 100% ΡΡΠ°Π±ΠΎΡΠ°Π»ΠΎ Π΄Π»Ρ ΠΌΠ΅Π½Ρ. Π Π 63.3 Π½Π΅Ρ ΠΠΊΡΠΏΠΎ
@jordangrant ,
Π’Π°ΠΊΠΆΠ΅ ΠΏΠΎΡ ΠΎΠΆΠ΅, ΡΡΠΎ Π²Ρ ΡΠΌΠΎΠ³Π»ΠΈ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ. ΠΠ½Π΅ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ, ΠΊΠ°ΠΊ Π²Ρ ΡΡΠΎ Π΄Π΅Π»Π°Π΅ΡΠ΅. Π― ΠΏΠΎΠΊΠ° Π²ΠΈΠ΄Π΅Π» ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠ°ΡΡΠΈΡΠΎΠ²ΠΊΡ ΡΡΠ΅ΠΊΠ°. Π― ΠΈΡΡ ΡΠΏΠΎΡΠΎΠ±Ρ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅.
@bobowinca - ΡΠ΅ΡΡΠΎΠ²ΡΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ, ΠΊΠΎΡΠΎΡΡΠΉ Ρ ΡΠ°Π·ΠΌΠ΅ΡΡΠΈΠ» Π·Π΄Π΅ΡΡ, Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΠΌΠΎΡΡ Π²Π°ΠΌ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡ Π΅Π³ΠΎ.
@bobowinca - ΡΠ΅ΡΡΠΎΠ²ΡΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ, ΠΊΠΎΡΠΎΡΡΠΉ Ρ ΡΠ°Π·ΠΌΠ΅ΡΡΠΈΠ» Π·Π΄Π΅ΡΡ, Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΠΌΠΎΡΡ Π²Π°ΠΌ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡ Π΅Π³ΠΎ.
ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΊΠ°ΠΊ ΡΠ°ΡΠΌ! Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ, ΠΠ»Π΅Π½Π½!
ΠΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ <item name="android:editTextBackground"><strong i="5">@android</strong>:color/transparent</item>
Π² styles.xml ΡΠ°Π±ΠΎΡΠ°Π΅Ρ!
ΠΠ΅ΡΠΎΠ΄ Ρ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ Π² TextInput key={Math.random().string()}
ΡΠ°Π±ΠΎΡΠ°Π», Π½ΠΎ ΠΏΡΠΈ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎΠΉ Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΠ° ΡΠΊΡΡΠ²Π°Π»Π°ΡΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π· ΡΠ΅ΡΠ΅Π· ΡΠ΅ΠΊΡΠ½Π΄Ρ - ΡΡΠΎ Π±ΡΠ»ΠΎ Π½Π΅Π΄ΠΎΠΏΡΡΡΠΈΠΌΠΎ.
Π‘Π°ΠΌΡΠΉ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ
ΠΡΠ° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΠ»Π° ΠΊ ΡΠ±ΠΎΡ Π½Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π΅Π½Π½ΠΎΠΉ ΡΡΠ΅Π΄Π΅. ΠΡΠΎ Π½Π΅ΠΏΡΠΈΡΡΠ½ΡΠΉ Π±Π°Π³, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π΅Π³ΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠ»ΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ. ΠΡ Π½Π°ΡΠ»ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠΎΠ±Π΅ΡΠ°ΡΡΠ΅Π΅ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π΄Π»Ρ Π½Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΈ Ρ Ρ ΠΎΡΠ΅Π» Π±Ρ ΠΏΠΎΠ΄Π΅Π»ΠΈΡΡΡΡ ΡΠ²ΠΎΠΈΠΌΠΈ Π²ΡΠ²ΠΎΠ΄Π°ΠΌΠΈ Π·Π΄Π΅ΡΡ, ΡΡΠΎΠ±Ρ, Π½Π°Π΄Π΅ΡΡΡ, ΡΡΠΊΠΎΠ½ΠΎΠΌΠΈΡΡ Π²ΡΠ΅ΠΌΡ ΠΈ ΡΠ°Π·ΠΎΡΠ°ΡΠΎΠ²Π°Π½ΠΈΠ΅ Π΄ΡΡΠ³ΠΈΡ .
Π’Π΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈΠ΅ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠΈ ΠΈ Π²Π΅ΡΡΠΈΠΈ
ΠΡΠ° ΠΎΡΠΈΠ±ΠΊΠ° ΠΏΡΠΈΠ²Π΅Π»Π° ΠΊ ΡΠ±ΠΎΡ Π½Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π° ΡΡΡΡΠΎΠΉΡΡΠ²Π°Ρ Samsung, Google ΠΈ LG Android. Π£ Π½Π°Ρ Π±ΡΠ»ΠΈ ΠΎΡΡΠ΅ΡΡ ΠΎ ΡΠ±ΠΎΡΡ ΠΈΠ· ΡΠ»Π΅Π΄ΡΡΡΠΈΡ Π²Π΅ΡΡΠΈΠΉ Android:
8.0.0
8.1.0
7.1.1
ΠΠ°ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ:
react-native
: 0.53.0react
: 16.2.0Π§ΡΠΎ Π²ΡΠ·ΡΠ²Π°Π΅Ρ ΡΠ±ΠΎΠΉ
ΠΠ°ΠΊ ΠΎΡΠΌΠ΅ΡΠ°Π»ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ Π² ΡΡΠΎΠΌ ΠΏΠΎΡΠΎΠΊΠ΅, ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°, ΠΏΠΎΡ ΠΎΠΆΠ΅, Π²ΡΠ·Π²Π°Π½Π° ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ²
TextInput
,FlatList
ΠΈScrollView
. Π Π½Π°ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ Ρ Π½Π°Ρ Π΅ΡΡΡ ΡΠΊΡΠ°Π½, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ ΠΎΠ΄ΠΈΠ½TextInput
ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅ΠΌΡΠΉ Π½Π°Π΄FlatList
. ΠΡΠΈ Π½Π°ΠΆΠ°ΡΠΈΠΈ Π½Π° ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π²FlatList
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΈΡ Π½Π° Π½ΠΎΠ²ΡΠΉ ΡΠΊΡΠ°Π½, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ ΡΠΎΡΠΌΡ. ΠΠΎΡΠ½Π΅Π²ΠΎΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ ΡΡΠΎΠΉ ΡΠΎΡΠΌΡ - ΡΡΠΎScrollView
ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΡΠ΄ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ²TextInput
(Π²ΠΌΠ΅ΡΡΠ΅ Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΠΌΠΈ ΠΊΠ½ΠΎΠΏΠΊΠ°ΠΌΠΈ ΠΈ Π΄ΡΡΠ³ΠΈΠΌΠΈ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌΡΠΌΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°ΠΌΠΈ). ΠΠ°ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π²ΡΠ»Π΅ΡΠ°Π΅Ρ, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π½Π°ΠΆΠΈΠΌΠ°Π΅Ρ Π½Π° ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΡΡΠΈΡFlatList
ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² (ΠΎΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π½Π΅ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π·).ΠΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΡΠ»ΠΎΠΆΠ½ΠΎ. Π€Π°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ, ΠΌΡ Π½Π΅ ΡΠΌΠΎΠ³Π»ΠΈ ΡΡΠΎΠ³ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ. ΠΠΎ ΠΌΡ Π·Π½Π°Π΅ΠΌ, ΡΡΠΎ ΡΠ±ΠΎΠΉ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π½Π° ΡΡΠΎΠΌ ΡΡΠ°ΠΏΠ΅ ΡΠ°Π±ΠΎΡΠ΅Π³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ°, ΠΏΡΠΎΡΠΌΠ°ΡΡΠΈΠ²Π°Ρ Π·Π°ΠΏΠΈΡΠΈ ΡΠ΅Π°Π½ΡΠ° Appsee.
ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΌΡ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, Π½Π°ΠΌ ΠΏΡΠΈΡΠ»ΠΎΡΡ ΠΏΠΎΠ»Π°Π³Π°ΡΡΡΡ Π½Π° ΠΆΡΡΠ½Π°Π»Ρ ΡΠ±ΠΎΠ΅Π² ΠΈΠ· Appsee Π΄Π»Ρ Π΅Π΅ ΠΎΡΠ»Π°Π΄ΠΊΠΈ. Π― ΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π» ΡΡΠ°ΡΡΠΈΡΠΎΠ²ΠΊΡ ΡΡΠ΅ΠΊΠ° ΠΈΠ· ΠΎΡΡΠ΅ΡΠΎΠ² ΠΎ ΡΠ±ΠΎΡΡ Π½ΠΈΠΆΠ΅ (ΠΈ ΠΏΡΠΎΠΏΡΡΡΠΈΠ» Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΠΌΠ½ΡΠ΅ ΡΡΠ°ΡΡΠΊΠΈ). ΠΡΠΎ Π±ΠΎΠ»Π΅Π΅ ΠΈΠ»ΠΈ ΠΌΠ΅Π½Π΅Π΅ ΠΈΠ΄Π΅Π½ΡΠΈΡΠ½ΠΎ ΡΡΠ°ΡΡΠΈΡΠΎΠ²ΠΊΠ°ΠΌ ΡΡΠ΅ΠΊΠ°, ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Π½ΡΠΌ Π² ΡΡΠΎΠΉ Π²Π΅ΡΠΊΠ΅ Π΄ΡΡΠ³ΠΈΠΌΠΈ:
ΠΡΡΠΎΡΠ½ΠΈΠΊ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ
ΠΡΠΎΡΠΈΡΠ°Π² ΡΡΡ Π²Π΅ΡΠΊΡ ΠΈ ΠΏΡΠΎΠ²Π΅Π΄Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°ΡΠΎΠ² ΠΈΠ»ΠΈ ΠΏΡΠΎΠ²Π΅Π΄Ρ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅, Ρ Π½Π°ΡΠ΅Π» ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ
underlineColorAndroid
prop Π² ΡΠ°ΠΉΠ»Π΅ReactTextInputManager.java
:ΠΡΡΠ΅Ρ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅, ΡΡΡΠ»ΠΊΠ° Π½Π° ΠΊΠΎΡΠΎΡΡΠΉ Π΅ΡΡΡ Π² ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ, ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΡΡ ΡΡΠ°ΡΡΠΈΡΠΎΠ²ΠΊΡ ΡΡΠ΅ΠΊΠ°:
ΠΡΠΎ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ ΡΡΠ°ΡΡΠΈΡΠΎΠ²ΠΊΠ΅ ΡΡΠ΅ΠΊΠ°, Ρ ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΌΡ ΡΡΠ°Π»ΠΊΠΈΠ²Π°Π΅ΠΌΡΡ Π² Π½Π°ΡΠ΅ΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ. Π― Π½Π΅ ΠΏΡΠ΅ΡΠ΅Π½Π΄ΡΡ Π½Π° ΠΏΠΎΠ»Π½ΠΎΠ΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, Π½ΠΎ Π²ΠΏΠΎΠ»Π½Π΅ Π²Π΅ΡΠΎΡΡΠ½ΠΎ, ΡΡΠΎ ΠΏΡΠΈΡΠΈΠ½Π° ΡΠ±ΠΎΡ Π½Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π² ΡΠ°Π±ΠΎΡΠ΅ΠΉ ΡΡΠ΅Π΄Π΅ ΡΠ²ΡΠ·Π°Π½Π° Ρ ΡΡΠ°Π±Π°ΡΡΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΎΡΠΈΠ±ΠΊΠΈ
Drawable.mutate()
. ΠΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ ΠΏΡΡΠ°Π΅ΠΌΡΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎunderlineColorAndroid
Π΄Π»Ρ Π½Π°ΡΠ΅Π³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°TextInput
(ΠΈ, ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π²ΡΠ·ΡΠ²Π°Π΅ΠΌ ΠΌΠ΅ΡΠΎΠ΄ReactTextInputManager.setUnderlineColor
).ΠΠ°ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ΅Π½Π΄Π΅ΡΠΈΠ»ΠΎ
TextInput
ΡΠΎ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌΠΈ ΡΠ΅ΠΊΠ²ΠΈΠ·ΠΈΡΠ°ΠΌΠΈ, ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ Π±ΡΠ»ΠΎunderlineColorAndroid="transparent"
:ΠΠ°ΠΊ ΠΌΡ ΡΡΠΎ ΠΈΡΠΏΡΠ°Π²ΠΈΠ»ΠΈ
ΠΠ°ΠΌ Π½ΡΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΡΡΡ ΠΎΠΏΠΎΡΡ, ΡΡΠΎΠ±Ρ ΡΠ±ΡΠ°ΡΡ ΠΏΠΎΠ΄ΡΠ΅ΡΠΊΠΈΠ²Π°Π½ΠΈΠ΅ Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ²
TextInput
Π² Π½Π°ΡΠ΅ΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ. ΠΠΎ, ΡΡΠ΄Ρ ΠΏΠΎ Π½Π°ΡΠΈΠΌ Π²ΡΠ²ΠΎΠ΄Π°ΠΌ, Π΅Π³ΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΠΏΡΠΎΠΏΡΡΠΊΠ° Π·Π°ΠΏΡΡΠΊΠ°Π» ΠΎΡΠΈΠ±ΠΊΡ Android, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΈΠ½ΠΎΠ³Π΄Π° ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΠ»Π° ΠΊ ΡΠ±ΠΎΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.Π ΡΡΠ°ΡΡΡΡ, Π΅ΡΡΡ Π΅ΡΠ΅ ΠΎΠ΄ΠΈΠ½ ΡΠΏΠΎΡΠΎΠ± ΡΠ±ΡΠ°ΡΡ ΠΏΠΎΠ΄ΡΠ΅ΡΠΊΠΈΠ²Π°Π½ΠΈΠ΅ Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ²
TextInput
Π½Π° Android. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΡΡΡΠΎΠΊΡ Π² ΡΠ°ΠΉΠ»android/app/src/main/res/values/styles.xml
:ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ Ρ ΡΠ°ΠΊΠΆΠ΅ Π²ΠΈΠ΄Π΅Π» ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π½ΠΎ ΡΡΠΎ Π½Π΅ ΡΠ½ΡΠ»ΠΎ Π΄Π»Ρ Π½Π°Ρ ΠΏΠΎΠ΄ΡΠ΅ΡΠΊΠΈΠ²Π°Π½ΠΈΡ:
ΠΡΠΎ Π½Π΅ ΡΠ΅ΡΠ°Π΅Ρ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ. ΠΡΠΎ ΠΏΡΠΎΡΡΠΎ ΠΎΠ±Ρ ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ ΠΎΡΠΊΠ°Π· ΠΎΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ
underlineColorAndroid
prop Π² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°ΡTextInput
.Π― ΠΏΠΎΠΊΠ° Π½Π΅ ΠΌΠΎΠ³Ρ Ρ ΡΠ²Π΅ΡΠ΅Π½Π½ΠΎΡΡΡΡ ΡΠΊΠ°Π·Π°ΡΡ, ΡΡΠΎ ΡΡΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΌΠ½Π΅ Π½Π΅ ΡΠ΄Π°Π»ΠΎΡΡ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎ. ΠΡ Π²Π½Π΅Π΄ΡΠΈΠΌ ΡΡΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π² ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ Π½Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π² Π±Π»ΠΈΠΆΠ°ΠΉΡΠΈΠ΅ Π½Π΅Π΄Π΅Π»ΠΈ. ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ Π½Π°ΠΌ ΠΏΡΠΈΠ΄Π΅ΡΡΡ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄ΠΎΠΆΠ΄Π°ΡΡ, ΡΡΠΎΠ±Ρ ΡΠ²ΠΈΠ΄Π΅ΡΡ, ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π»ΠΈ ΡΡΠΎ Π±ΠΎΠ»ΡΡΠ΅. Π― ΠΏΠΎΡΡΠ°ΡΠ°ΡΡΡ Π΄ΠΎΠ»ΠΎΠΆΠΈΡΡ ΠΎ Π½Π°ΡΠΈΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°Ρ .
Π£Π΄Π°ΡΠΈ Π²ΡΠ΅ΠΌ, Π±ΠΎΡΡΡΠΈΠΌΡΡ Ρ ΡΡΠΎΠΉ Π½Π΅ΠΏΡΠΈΡΡΠ½ΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ! ΠΠ°Π΄Π΅ΡΡΡ, ΡΡΠΎ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ.