React-native: NullPointerException: рд╡рд░реНрдЪреБрдЕрд▓ рдореЗрдердб 'android.graphics.drawable.Drawable android.graphics.drawable.rawable $ ConstantState.newDrawable (android.content.res.Rresources)' рдХрд╛ рдкреНрд░рд▓реЛрднрди рджреЗрдирд╛ред

рдХреЛ рдирд┐рд░реНрдорд┐рдд 11 рдЬрдире░ 2018  ┬╖  294рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: facebook/react-native

рдХреНрдпрд╛ рдпрд╣ рдПрдХ рдмрдЧ рд░рд┐рдкреЛрд░реНрдЯ рд╣реИ?

рд╣рд╛рдБ

рдХреНрдпрд╛ рдЖрдкрдиреЗ рдпреЛрдЧрджрд╛рди рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рджрд┐рд╢рд╛рдирд┐рд░реНрджреЗрд╢ рдкрдврд╝реЗ рд╣реИрдВ?

рд╣рд╛рдБ, рдореБрдЭреЗ рдЦреЗрдж рд╣реИ рдХрд┐ рдореИрдВ рдЗрд╕ рд╕реНрдЯреИрдХ рдЯреНрд░реЗрд╕ рдХреЛ рдЫреЛрдбрд╝рдХрд░ рдЗрд╕ рдЕрдкрд╡рд╛рдж рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдирд╣реАрдВ рджреЗ рд╕рдХрддрд╛ рдХреНрдпреЛрдВрдХрд┐ рдХреНрд░реИрд╢ рд░рд┐рдкреЛрд░реНрдЯ Google рдПрдирд╛рд▓рд┐рдЯрд┐рдХреНрд╕ рд╕реЗ рдПрдХрддреНрд░ рдХреА рдЧрдИ рдереА, рдореБрдЭреЗ рдЗрд╕ рдЕрдкрд╡рд╛рдж рдХреЛ рдлрд┐рд░ рд╕реЗ рдкреНрд░рдХрдЯ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рд╣реИред

рд╡рд╛рддрд╛рд╡рд░рдг

рд╡рд╛рддрд╛рд╡рд░рдг:
OS: macOS рд╕рд┐рдПрд░рд╛ 10.12.6
рдиреЛрдб: 8.4.0
рд╕реВрдд: 0.27.5
рдПрдирдкреАрдПрдо: 5.4.0
рдПрдВрдбреНрд░реЙрдЗрдб рд╕реНрдЯреВрдбрд┐рдпреЛ: 3.0

рдкреИрдХреЗрдЬ: (рд╡рд╛рдВрдЫрд┐рдд => рд╕реНрдерд╛рдкрд┐рдд)
рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓: 0.51.0 => 0.51.0
рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛: 16.0.0-рдЕрд▓реНрдлрд╛.12 => 16.0.0-рдЕрд▓реНрдлрд╛.12

рд▓рдХреНрд╖реНрдп рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо: Android (7.1.1)
рдореЛрдмрд╛рдЗрд▓: MIX 2
рдПрдВрдбреНрд░реЙрдпрдб: 7.1.1
java.lang.NullPointerException:
рд▓реБрднрд╛рд╡рдиреЗ рдЖрднрд╛рд╕реА рддрд░реАрдХреЗ 'android.graphics.drawable.rawable android.graphics.drawable.rawable $ ConstantState.newDrawable (android.content.res.Resources)' рдХреЛ рдПрдХ рдЕрд╢рдХреНрдд рд╕рдВрджрд░реНрдн рдкрд░ рджреЗрдЦреЗрдВ
android.graphics.drawable.rawableContainer $ DrawableContainerState.getChild (DrawableContainer.java:888)
android.graphics.drawable.rawableContainer.selectDrawable (DrawableContainer.java:466)
android.graphics.drawable.tateListDrawable.onStateChange (StateListDrawable.java:104)
android.graphics.drawable.rawable.setState (Drawable.java:735) рдкрд░
android.graphics.drawable.rawableWrapper.onStateChange (DrawableWrapper.java:333) рдкрд░
android.graphics.drawable.rawable.setState (Drawable.java:735) рдкрд░
android.graphics.drawable.ayerDrawable.onStateChange (LayerDrawable.java@88888 рдкрд░)
android.graphics.drawable.rawable.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)

Bug Android Ran Commands

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдпрд╣ рд╕рдорд╕реНрдпрд╛ рд╣рдорд╛рд░реЗ рдРрдк рдХреЛ рдЙрддреНрдкрд╛рджрди рдореЗрдВ рднреА рджреБрд░реНрдШрдЯрдирд╛ рдХрд╛ рдХрд╛рд░рдг рдмрдирд╛ рд░рд╣реА рд╣реИред рдпрд╣ рдПрдХ рдмреБрд░рд╛ рдмрдЧ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕реЗ рдкреБрди: рдкреЗрд╢ рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИред рд╣рдореЗрдВ рдЕрдкрдиреЗ рдРрдк рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрд╢рд╛рдЬрдирдХ рдирд┐рд░реНрдзрд╛рд░рдг рдорд┐рд▓рд╛ рд╣реИ, рдФрд░ рдореИрдВ рдХреБрдЫ рд╕рдордп рдФрд░ рдирд┐рд░рд╛рд╢рд╛ рд╕реЗ рджреВрд╕рд░реЛрдВ рдХреЛ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рдирд┐рд╖реНрдХрд░реНрд╖реЛрдВ рдХреЛ рдпрд╣рд╛рдВ рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред

рдЪрд╢реНрдорд╛ рдФрд░ рд╕рдВрд╕реНрдХрд░рдг

рдЗрд╕ рдмрдЧ рдХреЗ рдХрд╛рд░рдг рд╣рдорд╛рд░рд╛ рдРрдк рд╕реИрдорд╕рдВрдЧ, Google рдФрд░ рдПрд▓рдЬреА рдПрдВрдбреНрд░реЙрдЗрдб рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рдХреНрд░реИрд╢ рд╣реЛ рдЧрдпрд╛ рд╣реИред рд╣рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд Android рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рд╕реЗ рдХреНрд░реИрд╢ рд░рд┐рдкреЛрд░реНрдЯ рдорд┐рд▓реА рд╣реИ:

  • 8.0.0
  • 8.1.0
  • 7.1.1

рд╣рдорд╛рд░рд╛ рдРрдк рдЪрд▓ рд░рд╣рд╛ рд╣реИ:

  • react-native : 0.53.0
  • react : 16.2.0

рдХреНрдпрд╛ рджреБрд░реНрдШрдЯрдирд╛ рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИ

рдЬреИрд╕реЗ рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ рдиреЗ рдЗрд╕ рд╕реВрддреНрд░ рдореЗрдВ рдиреЛрдЯ рдХрд┐рдпрд╛ рд╣реИ, TextInput , FlatList , рдФрд░ ScrollView рдШрдЯрдХреЛрдВ рдХреЗ рдХреБрдЫ рд╕рдВрдпреЛрдЬрди рдкреНрд░рджрд╛рди рдХрд░рдХреЗ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рд╕реНрдХреНрд░реАрди рд╣реИ, рдЬрд┐рд╕рдореЗрдВ TextInput FlatList ред рдЬрдм FlatList рдореЗрдВ рдХрд┐рд╕реА рдПрдХ рдЖрдЗрдЯрдо рдХреЛ рдЯреИрдк рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдРрдк рдПрдХ рдирдИ рд╕реНрдХреНрд░реАрди рдкрд░ рдиреЗрд╡рд┐рдЧреЗрдЯ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдПрдХ рдлреЙрд░реНрдо рд╣реЛрддрд╛ рд╣реИред рдЗрд╕ рдлреЙрд░реНрдо рдХрд╛ рдореВрд▓ рдШрдЯрдХ рдПрдХ ScrollView рд╣реИ рдЬрд┐рд╕рдореЗрдВ TextInput рдШрдЯрдХреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╣реЛрддреА рд╣реИ (рдХреБрдЫ рдмрдЯрди рдФрд░ рдЕрдиреНрдп рдХрд╕реНрдЯрдо рдШрдЯрдХреЛрдВ рдХреЗ рд╕рд╛рде)ред рдЬрдм рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрди FlatList рдЖрдЗрдЯрдореЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдкрд░ рдЯреИрдк рдХрд░рддрд╛ рд╣реИ рддреЛ рд╣рдорд╛рд░рд╛ рдРрдк рдХреНрд░реИрд╢ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ (рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдпрд╣ _every_ time рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ)ред

рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╣рдо рдРрд╕рд╛ рдХрд░рдиреЗ рдореЗрдВ рдЕрд╕рдорд░реНрде рд░рд╣реЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рд╣рдо рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рд╣рдорд╛рд░реЗ 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)

рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕реНрд░реЛрдд

рдЗрд╕ рдзрд╛рдЧреЗ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрдврд╝рдиреЗ рдФрд░ рдХреБрдЫ рдШрдВрдЯреЛрдВ рдпрд╛ рд╢реЛрдз рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВрдиреЗ ReactTextInputManager.java рдлрд╝рд╛рдЗрд▓ рдореЗрдВ underlineColorAndroid рд╣реИрдВрдбрд▓рд░ рдкрд╛рдпрд╛:

@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() рдмрдЧ рдХрд╛ рдЯреНрд░рд┐рдЧрд░ рд╣реЛрдирд╛ рд╣реИред рдРрд╕рд╛ рддрдм рд╣реЛрддрд╛ рд╣реИ рдЬрдм рд╣рдо рдЕрдкрдиреЗ TextInput рдШрдЯрдХ рдкрд░ underlineColorAndroid рдкреНрд░реЛрдк рд╕реЗрдЯ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ (рдФрд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░ 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 рдШрдЯрдХреЛрдВ рд╕реЗ рдЕрдВрдбрд░рд▓рд╛рдЗрди рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдкреНрд░реЛрдк рдХреЛ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереАред рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реЗ рдирд┐рд╖реНрдХрд░реНрд╖реЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдЗрд╕рдХрд╛ рдкреНрд░реЛрдк рд╣реИрдВрдбрд▓рд░ рдПрдХ рдПрдВрдбреНрд░реЙрдЗрдб рдмрдЧ рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд░рддрд╛ рд╣реБрдЖ рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛, рдЬрд┐рд╕рд╕реЗ рдРрдк рдХрднреА-рдХрднреА рдХреНрд░реИрд╢ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред

рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдПрдВрдбреНрд░реЙрдЗрдб рдкрд░ TextInput рдШрдЯрдХреЛрдВ рд╕реЗ рдЕрдВрдбрд░рд▓рд╛рдЗрди рдХреЛ рд╣рдЯрд╛рдиреЗ рдХрд╛ рдПрдХ рдФрд░ рддрд░реАрдХрд╛ рд╣реИред рдЖрдк 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 рдкреНрд░реЛрдк TextInput рдШрдЯрдХреЛрдВ рдХреЗ рдЙрдкрдпреЛрдЧ рд╕реЗ рдмрдЪрдирд╛ рд╢рд╛рдорд┐рд▓ рд╣реИред

рдореИрдВ рдЕрднреА рддрдХ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдпрд╣ рдирд╣реАрдВ рдХрд╣ рд╕рдХрддрд╛ рдХрд┐ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рд╕реНрдерд╛рдиреАрдп рд╕реНрддрд░ рдкрд░ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдкреБрди: рдкреЗрд╢ рдХрд░рдиреЗ рдореЗрдВ рдЕрд╕рдорд░реНрде рд░рд╣рд╛ рд╣реВрдВред рд╣рдо рдЖрдиреЗ рд╡рд╛рд▓реЗ рд╣рдлреНрддреЛрдВ рдореЗрдВ рдЗрд╕ рдмрджрд▓рд╛рд╡ рдХреЛ рдЕрдкрдиреЗ рдРрдк рдореЗрдВ рдЕрдкрдбреЗрдЯ рдХрд░ рджреЗрдВрдЧреЗред рдЙрд╕рдХреЗ рдмрд╛рдж, рд╣рдореЗрдВ рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдереЛрдбрд╝реА рджреЗрд░ рдЗрдВрддрдЬрд╛рд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдЕрдм рд╣реЛрддрд╛ рд╣реИред рдореИрдВ рдЕрдкрдиреЗ рдирд┐рд╖реНрдХрд░реНрд╖реЛрдВ рдХреЗ рд╕рд╛рде рд╡рд╛рдкрд╕ рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ред

рдЗрд╕ рдирд┐рд░рд╛рд╢рд╛рдЬрдирдХ рдореБрджреНрджреЗ рдХреЗ рд╕рд╛рде рдХреБрд╢реНрддреА рдореЗрдВ рд╣рд░ рдХрд┐рд╕реА рдХреЛ рд╢реБрднрдХрд╛рдордирд╛рдПрдБ! рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдпреЗ рдЖрдкрдХреА рдорджрдж рдХрд░реЗрдЧрд╛ред

рд╕рднреА 294 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдПрдХ рд╣реА рдореБрджреНрджреЗ рдХрд╛ рд╕рд╛рдордирд╛ред

рд╡рд╣реА рдпрд╣рд╛рдБ [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

рд╡рд╣реА рдореБрджреНрджрд╛

рд╡рд╣реА рдореБрджреНрджрд╛ред рдПрдХ рд╣реА рд╕рд╛рдпрд╛

рдЖрд░рдПрди 44.0 рдкрд░ рдпрд╣рд╛рдВ

+1 рдЕрдирдерд╛ тАЩрдПрдХ

рдкреИрдХреЗрдЯ рдХреЛ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд░рдиреЗ рдФрд░ рдХреИрд╢ рд╕рд╛рдлрд╝ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рджреЛрд╕реНрддреЛрдВ рдиреЗ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд┐рдпрд╛!

рдореЗрд░реЗ рд▓рд┐рдП рднреА рдпрд╣реА рдореБрджреНрджрд╛ рд╣реИред рдореИрдВ рдЖрд░рдПрди 0.51.0 рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓-рд╕рд╛рдордЧреНрд░реА-рдЯреЗрдХреНрд╕реНрдЯрдлреАрд▓реНрдб 0.12.0 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред

рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рднреА рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдЕрдЬреАрдм рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рддреНрд░реБрдЯрд┐ рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдирд╛ рдмрд╣реБрдд рдХрдард┐рди рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╕реНрдЯреИрдХ рдЯреНрд░реЗрд╕ рдореЗрдВ рдХреЛрдИ рдЙрдкрдпреЛрдЧреА рдЬрд╛рдирдХрд╛рд░реА рдирд╣реАрдВ рд╣реИред рдореБрдЭреЗ рдпрд╣ рднреА рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рддреНрд░реБрдЯрд┐ рдХрд╣рд╛рдВ рд╣реЛ рд╕рдХрддреА рд╣реИред
рдпрд╣рд╛рдБ рд╕рдорд╛рдзрд╛рди рд╣реЛрдЧрд╛ рдЕрдЧрд░ рдореИрдВ рд╕рдорд╛рдзрд╛рди рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП

RN 0.52.0 рдкрд░ рд╡рд╣реА рддреНрд░реБрдЯрд┐ рд╣реЛ рд░рд╣реА рд╣реИред

рдЗрд╕реЗ рдкреЛрд╕реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж! рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдЬрдирд╡рд░реА 2018 рдХреЛ рд░рд┐рд▓реАрдЬрд╝ рдХрд┐рдП рдЧрдП рд░рд┐рдПрдХреНрдЯ рдиреЗрдЯрд┐рд╡, v0.53.0 рдХреЗ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдХреНрдпрд╛ рдЖрдк рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдЕрднреА рднреА рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдкреБрди: рдкреНрд░рд╕реНрддреБрдд рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ?

рдореИрдВ рдЗрд╕реЗ рдмрдВрдж рдХрд░рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдХреГрдкрдпрд╛ рдПрдХ рдирдпрд╛ рдореБрджреНрджрд╛ рдЦреЛрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рддрдВрддреНрд░ рдорд╣рд╕реВрд╕ рдХрд░реЗрдВ рдпрджрд┐ рдЖрдк рдпрд╣ рдкреБрд╖реНрдЯрд┐ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИрдВ рдХрд┐ рдпрд╣ рдЕрднреА рднреА v0.53.0 рдпрд╛ рдирдП рдореЗрдВ рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИред

рдпреЛрдЧрджрд╛рди рдХреИрд╕реЗ рдХрд░реЗрдВ тАв рд░рдЦрд░рдЦрд╛рд╡ рд╕реЗ рдХреНрдпрд╛ рдЙрдореНрдореАрдж рдХрд░реЗрдВ

0.53.3 рдкрд░ рдПрдХ рд╣реА рдореБрджреНрджрд╛

рд╡рд╣реА рдореБрджреНрджрд╛

@ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рджреЗрд╢реА-рдмреЛрдЯ рдХреЛ рдореБрджреНрджреЗ рдХреЛ рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ

Android 8 рдХреЗ рд╕рд╛рде рдПрдХ рд╣реА рдореБрджреНрджреЗ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝ рд░рд╣рд╛ рд╣реИ

рдореБрдЭреЗ рднреАред рдореВрд▓ рдирд┐рд╡рд╛рд╕реА 0.53.3, SM-T550, API рд╕реНрддрд░ 25 (Android 7.0)

рдпрд╣ рдореБрджреНрджрд╛ рдореЗрд░реЗ рд╕рд╛рде рдмрд╕ рдкреЙрдк рд╣реБрдЖ, рд░рд┐рдПрдХреНрдЯ рджреЗрд╢реА 0.53.3 - рдПрдВрдбреНрд░реЙрдЗрдб 8.1ред

рдореВрд▓ рдирд┐рд╡рд╛рд╕реА 0.53.3, рдПрдВрдбреНрд░реЙрдЗрдб 8, рдПрдХ рд╣реА рдореБрджреНрджрд╛

рдПрдХ рд╣реА рдореБрджреНрджрд╛, рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рджреЗрд╢реА 0.53.0 рдФрд░ рдПрдВрдбреНрд░реЙрдЗрдб 8. рдпрд╣ рдЕрдЬреАрдм рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдпрд╣ рддреНрд░реБрдЯрд┐ рдЕрдирд┐рдпрдорд┐рдд рд░реВрдк рд╕реЗ рдкреНрд░рдХрдЯ рд╣реЛрддреА рд╣реИред рдореБрдЭреЗ рдЗрд╕реЗ рдкреБрди: рдкреЗрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╕рдЯреАрдХ рдХрджрдо рдирд╣реАрдВ рдорд┐рд▓ рд░рд╣рд╛ рд╣реИред

рдЖрд░рдПрди 0.54.2 рдкрд░ рдПрдХ рдкреНрд░реЛрдбрдХреНрд╢рди рдРрдк рдЪрд▓рд╛рдПрдВ рдФрд░ рдпрд╣ рдРрдк рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдкрд░ рдПрдВрдбреНрд░реЙрдЗрдб 8.0.0 рдЪрд▓рд╛рдиреЗ рд╡рд╛рд▓реЗ рдХреБрдЫ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИред

selection_024

рдпрд╣ рдореБрджреНрджрд╛ рдХреНрдпреЛрдВ рдмрдВрдж рд╣реИ? рд╣рдордореЗрдВ рд╕реЗ рдХреБрдЫ рд▓реЛрдЧ рдЙрддреНрдкрд╛рджрди рдХреЗ рдорд╛рд╣реМрд▓ рдореЗрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП "рдкреИрдХреЗрдЯ рдХреЛ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд░рдирд╛" рдПрдХ рд╕реНрд╡реАрдХрд╛рд░реНрдп рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реИред

рд╡рд░реНрддрдорд╛рди рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рд╕реЗ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдореИрдВ рднреА рд╕реНрдЯреИрдХ рдирд┐рд╢рд╛рди рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдЬреЛ рд╕рдВрдмрдВрдзрд┐рдд рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ:

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 рдПрдкреАрдЖрдИ 26

0.54.2 рдкрд░ рд╕рдорд╛рдиред

рдореИрдВрдиреЗ рдЗрд╕реЗ рдПрдХ рдлреНрд▓реИрдЯрд┐рд╕реНрдЯ рдореЗрдВ <TextInput> рд╕реАрдорд┐рдд рдХрд┐рдпрд╛ рд╣реИред рдЬрдм рдореИрдВ рдЗрд╕реЗ <Text> рд╕рд╛рде рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рд╕рдорд╕реНрдпрд╛ рдЧрд╛рдпрдм рд╣реЛ рдЬрд╛рддреА рд╣реИред

рдХреГрдкрдпрд╛ рдЕрдм рдЙрдкрд▓рдмреНрдз рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде рдкреБрди: рдкреЗрд╢ рдХрд░реЗрдВ рдФрд░ рдореИрдВ рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓ рджреВрдВрдЧрд╛ред

рд╡рд╣реА рдпрд╣рд╛рдБ @ radko93

рдПрдВрдбреНрд░реЙрдЗрдб 8.1 рдПрдкреАрдЖрдИ 27

"рдирд┐рд░реНрднрд░рддрд╛": {
"рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛": "16.3.1",
"рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓рдХ": "0.55.1",
"рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рджреЗрд╢реА-рд░реИрдЦрд┐рдХ-рдврд╛рд▓": "^ 2.4.0",
"рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓-рд╡реЗрдХреНрдЯрд░-рдЖрдЗрдХрди": "^ 4.6.0",
"рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдиреЗрд╡рд┐рдЧреЗрд╢рди": "^ 1.5.11"
},

рдПрдХ рдЕрд╢рдХреНрдд рд╡рд╕реНрддреБ рд╕рдВрджрд░реНрдн рдкрд░ рдЖрднрд╛рд╕реА рдкрджреНрдзрддрд┐ 'android.graphics.rectable.Drawable android.graphics.drawable.rawable $ ConstantState.newDrawable (android.content.res.Resources)' рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред
createAllFutures
DrawableContainerред рдЬрд╛рд╡рд╛: 875
getOpacity
DrawableContainerред рдЬрд╛рд╡рд╛: 1158
getOpacity
DrawableContainerред рдЬрд╛рд╡рд╛: 433
getOpacity
InsetDrawableред рдЬрд╛рд╡рд╛: 258
computeOpaqueFlags
рд░рд╛рдпред рдЬрд╛рд╡рд╛: 15,698
setBackgroundDrawable
рд░рд╛рдпред рдЬрд╛рд╡рд╛: 20502
рдмреИрдХрдЧреНрд░рд╛рдЙрдВрдб рд╕реЗрдЯ
рд░рд╛рдпред рдЬрд╛рд╡рд╛: 20,395

рд░рд╛рдпред рдЬрд╛рд╡рд╛: 5238

рд╡реНрдпрд╛рдЦреНрдпрд╛рди рджрд░реНрд╢рдиред рдЬрд╛рд╡рд╛: 826

рд▓рд┐рдЦрд╛рдИ рдореЗрдВ рдмрджрд▓рд╛рд╡ред рдЬрд╛рд╡рд╛: 88

рд▓рд┐рдЦрд╛рдИ рдореЗрдВ рдмрджрд▓рд╛рд╡ред рдЬрд╛рд╡рд╛: 84

рд▓рд┐рдЦрд╛рдИ рдореЗрдВ рдмрджрд▓рд╛рд╡ред рдЬрд╛рд╡рд╛: 80

рд▓рд┐рдЦрд╛рдИ рдореЗрдВ рдмрджрд▓рд╛рд╡ред рдЬрд╛рд╡рд╛: 76
setThemedContext
ReactTextInputShadowNodeред рдЬрд╛рд╡рд╛: 80
createView
UIImplementationред рдЬрд╛рд╡рд╛: 282
createView
UIManagerModuleред рдЬрд╛рд╡рд╛: 366
рдЖрд╣реНрд╡рд╛рди
Method.java
рдЖрд╣реНрд╡рд╛рди
JavaMethodWrapperред рдЬрд╛рд╡рд╛: 372
рдЖрд╣реНрд╡рд╛рди
JavaModuleWrapperред рдЬрд╛рд╡рд╛: 160
Daud
NativeRunnable.java
handleCallback
рд╣реИрдВрдбрд▓рд░ред рдЬрд╛рд╡рд╛: 790
dispatchMessage
рд╣реИрдВрдбрд▓рд░ред рдЬрд╛рд╡рд╛: 99
dispatchMessage
MessageQueueThreadHandlerред рдЬрд╛рд╡рд╛: 29
рд▓реВрдк
Looperред рдЬрд╛рд╡рд╛: 164
Daud
MessageQueueThreadImplред рдЬрд╛рд╡рд╛: 192
Daud
рдереНрд░реЗрдбред рдЬрд╛рд╡рд╛: 764

рд╡рд╣реА рдореБрджреНрджрд╛

package.json
"рдирд┐рд░реНрднрд░рддрд╛": {
"рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛": "16.3.1",
"рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓рдХ": "0.55.2",
},

build.gradle
compileSdkVersion 26
buildToolsVersion "26.0.2"
minSdkVersion 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
рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓рдХ я╝Ъ 0.48.3

рд╡рд╣реА рдореБрджреНрджрд╛ред

selection_007

рдЗрд╕реА рдореБрджреНрджреЗ рдкрд░, рдкреНрд░реЛрдбрдХреНрд╢рди рдХреЗ рдорд╛рд╣реМрд▓ рдореЗрдВ device рдореЗрд░рд╛ рдбрд┐рд╡рд╛рдЗрд╕ HUAWEI (LLD-AL10) 8.0.0 рд╣реИ, рдореИрдВ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд░рд┐рдПрдХреНрдЯ рдиреЗрдЯрд┐рд╡ 0.46.2 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдзрдиреНрдпрд╡рд╛рдж

рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓ (0.55.3) рдХреЗ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдПрдХ рд╣реА рдореБрджреНрджрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ред рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рдЙрд▓реНрд▓реЗрдЦ рдПрдХ рд╕рдорддрд▓ рд╕реВрдЪреА рдореЗрдВ TextInput рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╕рдорд╕реНрдпрд╛ рд▓рдЧрддреА рд╣реИред Android 8.0 рдФрд░ 8.1 рдореЗрдВ рддреНрд░реБрдЯрд┐ рд╣реЛ рд░рд╣реА рд╣реИред рдЗрд╕ рдореБрджреНрджреЗ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб?

рдореИрдВ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓ 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>
    );
  }
}

рдореИрдВ рдЗрд╕реЗ MacOS 10.13.3 рд╕реЗ рдПрдВрдбреНрд░реЙрдЗрдб 8.0.0 рдХреЗ рд╕рд╛рде рдЧреИрд▓реЗрдХреНрд╕реА S8 рдкрд░ рдЪрд▓рд╛ рд░рд╣рд╛ рдерд╛ред

"dependencies": {
    "react": "16.3.1",
    "react-native": "0.55.3"
},

рдореИрдВ рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рдХрд┐ рдХреНрдпрд╛ рддреНрд░реБрдЯрд┐ рд╕реАрдзреЗ TextInputs рдХреА рд╕рдВрдЦреНрдпрд╛ рд╕реЗ рдЬреБрдбрд╝реА рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХрдорд╛рддреНрд░ рддрд░реАрдХрд╛ рд╣реИ рдЬреЛ рдореИрдВ рдЗрд╕ рдмрдЧ рдХреЛ рдХрд╛рдлреА рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рддрд░реАрдХреЗ рд╕реЗ рдкреБрди: рдкреЗрд╢ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред 128 рдЗрдирдкреБрдЯ рдХреЗ рд╕рд╛рде рдореБрдЭреЗ рдпрд╣ рддреНрд░реБрдЯрд┐ рд╣рд░ рдкреБрдирд░рд╛рд░рдВрдн рдкрд░ рдирд╣реАрдВ рдорд┐рд▓реА, рд▓реЗрдХрд┐рди рдХреБрдЫ рдкреБрдирдГ рд▓реЛрдб рдХреЗ рдмрд╛рдж рдпрд╣ рд╕рд╛рдордиреЗ рдЖрдпрд╛ред 256 рдирдВрдЧреЗ TextInputs рдореЗрдВ рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдореИрдВ рддреНрд░реБрдЯрд┐ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдП рдмрд┐рдирд╛ рдЖрд╡реЗрджрди рд╢реБрд░реВ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реВрдВред рдореИрдВрдиреЗ рдпрд╣ рднреА рджреЗрдЦрд╛ рдХрд┐ TextInputs рдХреЗ рдмреАрдЪ рддрддреНрд╡реЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рдпрд╣ рддреНрд░реБрдЯрд┐ рд╣реЛрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХрдо рд╣реЛ рдЧрдИ рдереА, рдЗрд╕рд▓рд┐рдП рд╕рдВрднрд╡рддрдГ рдпрд╣ TextInputs рдХреА рд╕рдВрдЦреНрдпрд╛ рд╕реЗ рд╕реАрдзреЗ рдмрдВрдзрд╛ рд╣реБрдЖ рдирд╣реАрдВ рд╣реИред рдореИрдВрдиреЗ рдЕрдкрдиреЗ рд╡рд░реНрддрдорд╛рди рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдпрд╣ рдХреЛрд╢рд┐рд╢ рдХреА рдФрд░ рд╢реБрд░реБрдЖрддреА рд╕реНрдХреНрд░реАрди рдореЗрдВ рд╕реИрдХрдбрд╝реЛрдВ TextInputs рдЬреЛрдбрд╝рдХрд░ рдЗрд╕ рддреНрд░реБрдЯрд┐ рдХреЛ рднреА рдЯреНрд░рд┐рдЧрд░ рдХрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдиреНрдп рддрддреНрд╡реЛрдВ рдореЗрдВ рд▓рд┐рдкрдЯреЗ TextInputs рдХреА рд╕рдорд╛рди рдорд╛рддреНрд░рд╛ рдХреЗ рд╕рд╛рде рдореЗрд░реЗ рдЕрдиреНрдп рд╡рд┐рдЪрд╛рд░ рд╣рдореЗрд╢рд╛ рдЗрд╕ рддреНрд░реБрдЯрд┐ рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдореЗрд░реЗ рдЖрд╡реЗрджрди рдореЗрдВ рдХреБрдЫ рд╣реИ ред

рдореЗрд░реЗ рд╕рд╛рде рднреА рд╡рд╣реА рджрд┐рдХреНрдХрдд рд╣реИред рдореИрдВ рдЗрд╕реЗ рдПрдВрдбреНрд░реЙрдЗрдб 8.0.0 рдХреЗ рд╕рд╛рде рд╣реБрдЖрд╡реЗрдИ рдкреА 10 рдкрд░ рдЪрд▓рд╛ рд░рд╣рд╛ рдерд╛ред
"react": "^16.2.0", "react-native": "^0.55.0",
рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рдорд╕реНрдпрд╛ TextInputs рдореЗрдВ рд╣реИред рдпрд╣ рдореЗрд░реЗ Huawei P10 (Android 8.0.0) рдкрд░ рд╣реЛрддрд╛ рд╣реИред рдХреНрдпрд╛ рдЗрд╕рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рд╕реЗ рдХреЛрдИ рддрдп рд╣реИ?

рдПрдВрдбреНрд░реЙрдпрдб: 7.1.1
"рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓рдХ": "0.53.3",
image

рдЗрд╕реЗ рдкреЛрд╕реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж! рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХрд╛ рдореБрджреНрджрд╛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рдореВрд▓ рдХреЗ рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдХреНрдпрд╛ рдЖрдк рдирд╡реАрдирддрдо рд░рд┐рд▓реАрдЬрд╝, 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

рдПрдкреАрдЖрдИ рд╕реНрддрд░ 21 рд╕реЗ рдЕрдкрдиреЗ рдПрдореБрд▓реЗрдЯрд░ рдХреЛ рдПрдкреАрдЖрдИ рд╕реНрддрд░ 26 рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдореЗрд░реЗ рд▓рд┐рдП рдРрд╕рд╛ рд╣реЛрдиреЗ рд▓рдЧрд╛

рд╡рд┐рдХрд╛рд╕ рдХрд░рддреЗ рд╕рдордп рдмрд┐рдирд╛ рдХрд┐рд╕реА рдХрд╛рд░рдг рдХреЗ рдореБрдЭреЗ рдпрд╣ рддреНрд░реБрдЯрд┐ рджрд┐рдЦрд╛рдИ рджреАред рдореИрдВрдиреЗ рдЕрдкрдиреЗ / рдмрд┐рд▓реНрдб рдлреЛрд▓реНрдбрд░ рдХреЛ рд╕рд╛рдл рдХрд┐рдпрд╛ рдФрд░ рдПрдХ run-android рдлрд┐рд░ рд╕реЗ рднрд╛рдЧ рдЧрдпрд╛ред рдореБрджреНрджрд╛ рдЧрд╛рдпрдм рд╣реЛ рдЧрдпрд╛ред рд╕рдЪрдореБрдЪ рдЕрдЬреАрдмред рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЖрдк рдореЗрдВ рд╕реЗ рдХреБрдЫ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрд╡рдЪреНрдЫ рдирд┐рд░реНрдорд╛рдг рдЗрд╕рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд░реЗрдЧрд╛ред

рдЗрд╕реА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд▓реЗрдХрд░ред рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рдЕрдВрддрд░ - рдореЗрд░рд╛ рдореИрдВ рдПрдХ VirtualizedList (FlatList рдХреЗ рдорд╛рддрд╛-рдкрд┐рддрд╛) рдХреЗ рдЕрдВрджрд░ TextInputs рдХреЛ рдШреЛрдВрд╕рд▓рд╛ рдмрдирд╛ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдореБрдЭреЗ рдХреЗрд╡рд▓ рдЙрд╕ рдореБрджреНрджреЗ рдХреЛ рдорд┐рд▓рддрд╛ рд╣реИ рдЬрдм рдореИрдВ рдЙрд╕ рд╕реВрдЪреА рдореЗрдВ рдЪрд╛рд░реЛрдВ рдУрд░ рд╕реНрдХреНрд░реЙрд▓ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реВрдВ, рддрдм рднреА рдХреЗрд╡рд▓ рд╕рднреА рд╕рдордп рдХреЗ рдмрдЬрд╛рдп рд░реБрдХ-рд░реБрдХ рдХрд░ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИред рджреВрд╕рд░реЛрдВ рдХреЗ рд╕рдорд╛рди, рдпрд╣ рдЙрддреНрдкрд╛рджрди рдХреЗ рдорд╛рд╣реМрд▓ рдореЗрдВ рд╣реЛ рд░рд╣рд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдкреИрдХреЗрдЯ рдХреЛ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд░рдирд╛ рдПрдХ рд╡рд┐рдХрд▓реНрдк рдирд╣реАрдВ рд╣реИред

рдХреБрдЫ рдЦреБрджрд╛рдИ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, Android рдореЗрдВ рд╣реА рдПрдХ рдкреБрд░рд╛рдиреЗ рдореБрджреНрджреЗ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ: https://issuetracker.google.com/issues/37068452
рдпрджрд┐ рдпрд╣ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╕рдорд╕реНрдпрд╛ рд╣реИ, рддреЛ рдпрд╣ рдЖрд░рдПрди рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдХреЗрд╡рд▓ рд╕рдВрдХрд▓рди рдФрд░ рд╕рдорд░реНрдерди рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЛ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдХреЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЙрд╕ рдкрд░ рдХреЛрдИ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рд╣реИред

рдЕрджреНрдпрддрди: рдирд┐рд░реНрдорд╛рдг рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рдПрдХ рдЙрдЪреНрдЪ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕ рдХреЛ рдордЬрдмреВрд░ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдирд╛ рдФрд░ рд╕рдВрдХрд▓рди рдХрд░рдирд╛ рдореЗрд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдЗрд╕ рдПрд╕рдУ рдкреЛрд╕реНрдЯ рдореЗрдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЕрдЧрд░ рдореИрдВрдиреЗ рдЙрди рдЙрдЪреНрдЪ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЛ рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рд╣реИ, рдЕрдЧрд░ рдореЗрд░рд╛ рдмрд┐рд▓реНрдб рд╕реЗрдЯрдЕрдк рдЙрд╕ рддрд░рд╣ рд╕реЗ рд╕рдмрдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдЖрд░рдПрди рдХрд╛ рдЗрд▓рд╛рдЬ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ, рдпрд╛ рдпрджрд┐ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдПрдХ рд╡реИрдз рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реИред

EDIT 2: рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ ReactEditText рдПрдбрд┐рдЯ рдЯреЗрдХреНрд╕реНрдЯ (рдЬреЛ рдХрд┐

EDIT 3: рдпрд╣ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рдерд╛ред рдореБрдЭреЗ рдЕрдм рд╡рд┐рд╢реНрд╡рд╛рд╕ рдирд╣реАрдВ рд╣реЛ рд░рд╣рд╛ рд╣реИ рдХрд┐ рдпрд╣ рдореБрджреНрджрд╛ рд▓рд┐рдВрдХ рдХрд┐рдП рдЧрдП AOSP рдХреЗ рд╕рдорд╛рди рд╣реИред
рдореИрдВ рдХрд╣ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рдЗрд╕ рдмрд╛рдд рд╕реЗ рдкреНрд░рдХрдЯ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдиреЗ рдЕрдкрдиреЗ рдЯреЗрдХреНрд╕реНрдЯ рдХреЛ рдХрд┐рд╕ рддрд░рд╣ рдХрд╛ рд╕реНрдХреНрд░реЙрд▓-рдЗрди рдореЗрдВ рдбрд╛рд▓рд╛ рд╣реИ - рдореИрдВ рд╡рд░реНрдЪреБрдЕрд▓рд╛рдЗрдЬрд╝реНрдбрд▓рд┐рд╕реНрдЯ рдФрд░ рд╕реНрдХреНрд░реЙрд▓рд╡реНрдпреВ рджреЛрдиреЛрдВ рдореЗрдВ рдкреБрди: рдкреЗрд╢ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛, рдФрд░ рдЗрд╕ рдереНрд░реЗрдб рдореЗрдВ рдХрдИ рд▓реЛрдЧреЛрдВ рдиреЗ рдЗрд╕реЗ рдлреНрд▓реИрдЯрд▓рд┐рд╕реНрдЯ рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рд╣реИред

рдореИрдВ рдЙрддреНрдкрд╛рджрди рдкрд░ рдпрд╣ рдПрдХ рд╣реА рд╣реИ

рдореИрдВ рднреА рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред @Mbret рдХреЗ рд░реВрдк рдореЗрдВ рдореЗрд░реЗ рд▓рд┐рдП cd android ; ./gradlew clean ; cd .. ; react-native run-android рдХрд╛рд░реНрдп рдЪрд▓ рд░рд╣рд╛ рд╣реИ (рдзрдиреНрдпрд╡рд╛рдж!)

рдорд╣рд╛рди, рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЗ рд╕рд╛рде рдЙрддреНрдкрд╛рджрди рдкрд░ рдРрдкреНрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛? : |

рдХреНрд╖рдорд╛ рдХрд░реЗрдВ @ahanusek , рдореИрдВ рдпрд╣ рдирд╣реАрдВ рдХрд╣ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рдореБрджреНрджрд╛

рд▓реЗрдХрд┐рди рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рднреА рдпрд╣ рдХреЛрдИ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реИред рдареАрдХ рд╣реИ, рдЖрдк рдЕрдкрдиреЗ рдирд┐рд░реНрдорд╛рдг рдХреЛ рд╕рд╛рдл рдХрд░рддреЗ рд╣реИрдВ, рдлрд┐рд░ рд╕реЗ рдРрдк рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрджрд┐ рдЖрдк "рд╢рд╛рдпрдж рд╣реА" рдЗрдирдкреБрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рднреА рдЖрдкрдХреЛ рдпрд╣ рддреНрд░реБрдЯрд┐ рдлрд┐рд░ рд╕реЗ рдорд┐рд▓ рд╕рдХрддреА рд╣реИред

@ahanusek рд╣рд╛рдВ, рдореИрдВ рдЖрдкрд╕реЗ рд╕рд╣рдордд рд╣реВрдВ, рдФрд░ рдЖрдкрдХреЗ рд╕рд╛рде рдмрд╣рд╕ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИред рдпрд╣ рдХреЛрдИ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдореЗрд░реЗ рд▓рд┐рдП, рдФрд░ рдЕрдм рдХреЗ рд▓рд┐рдП, рдЗрд╕рдиреЗ рдореБрдЭреЗ рд╡рд┐рдХрд╛рд╕ рдЬрд╛рд░реА рд░рдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХрд╛ рдХрд╛рдо рдХрд┐рдпрд╛ рд╣реИ

рдЗрд╕реЗ рднреА рджреЗрдЦрдХрд░, v0.55.4:

screen shot 2018-06-12 at 1 05 41 pm

рдмрд╣реБрдд рдХреБрдЫ рдирд┐рд╢реНрдЪрд┐рдд рд╣реИ рдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ FlatFist рдпрд╛ VirtualizedList, fwiw рдореЗрдВ рдПрдХ TextField рдирд╣реАрдВ рд╣реИред рдпрд╣ рд╣рдорд╛рд░реЗ рдЙрддреНрдкрд╛рджрди рдирд┐рд░реНрдорд╛рдг рдореЗрдВ рд╣реЛ рд░рд╣рд╛ рд╣реИред

v0.55.4 рдореЗрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рджреЗрдЦрдХрд░ред рдФрд░ рд╣рд╛рдБ рд╣рдо рдПрдХ рд╕реВрдЪреА рдореЗрдВ TextInput рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВред

2018-06-13_23-04-20_scrot

рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рд╣реЛрддрд╛ рд╣реИ 0.55ред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рджреЗрд╢реА 0.55 рд╣реЛрддрд╛ рд╣реИ, рдлреНрд▓реИрдЯ рд╕реВрдЪреА рдореЗрдВ рдЗрдирдкреБрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдПред

рдпрджрд┐ рд▓реЛрдЧ рдореЗрд░реА рд╕рдВрдкрд╛рджрд┐рдд рдЯрд┐рдкреНрдкрдгреА рдирд╣реАрдВ рджреЗрдЦрддреЗ рд╣реИрдВ рддреЛ рдпрд╣рд╛рдБ рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкреЛрд╕реНрдЯ рдмрдирд╛рдирд╛:

рдореИрдВ рдХрд╣ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рдЗрд╕ рдмрд╛рдд рд╕реЗ рдкреНрд░рдХрдЯ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдиреЗ рдЕрдкрдиреЗ рдЯреЗрдХреНрд╕реНрдЯ рдХреЛ рдХрд┐рд╕ рддрд░рд╣ рдХрд╛ рд╕реНрдХреНрд░реЙрд▓-рдЗрди рдореЗрдВ рдбрд╛рд▓рд╛ рд╣реИ - рдореИрдВ рд╡рд░реНрдЪреБрдЕрд▓рд╛рдЗрдЬрд╝реНрдбрд▓рд┐рд╕реНрдЯ рдФрд░ рд╕реНрдХреНрд░реЙрд▓рд╡реНрдпреВ рджреЛрдиреЛрдВ рдореЗрдВ рдкреБрди: рдкреЗрд╢ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛, рдФрд░ рдЗрд╕ рдереНрд░реЗрдб рдореЗрдВ рдХрдИ рд▓реЛрдЧреЛрдВ рдиреЗ рдЗрд╕реЗ рдлреНрд▓реИрдЯрд▓рд┐рд╕реНрдЯ рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рд╣реИред
рдпрд╛, рдЗрд╕реЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд░реВрдк рдореЗрдВ рд╡рд╛рдХреНрдпрд╛рдВрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╕рдорд╕реНрдпрд╛ рдХреЛ рдлреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ
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"
рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓ "~ 0.55.2"

рд╣рдо рдЕрдкрдиреЗ рдХреЛрдб рдореЗрдВ рднреА рдЗрд╕реА рддрд░рд╣ рдХреЗ рдореБрджреНрджреЗ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣реЗ рдереЗ

рдХреНрд░реИрд╢ рд▓реЙрдЧ:
рдШрд╛рддрдХ рдЕрдкрд╡рд╛рдж: java.lang.NullPointerException: рдЖрднрд╛рд╕реА рдкрджреНрдзрддрд┐ 'android.graphics.drawable.Drawable android.graphics.drawable.Drawable $ ConstantState .newDrawable (android.content.res.Resources)' рдХреЛ рдПрдХ рдЕрд╢рдХреНрдд рд╡рд╕реНрддреБ рд╕рдВрджрд░реНрдн рдореЗрдВ рд▓рд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред
android.graphics.drawable.rawableContainer $ DrawableContainerState.createAllFutures (DrawableContainer.java:875) рдкрд░
android.graphics.drawable.rawableContainer $ DrawableContainerState.getOpacity (DrawableContainer.java:1158) рдкрд░
android.graphics.drawable.rawableContainer.getOpacity (DrawableContainer.java:433) рдкрд░
android.graphics.drawable.InsetDrawable.getOpacity (InsetDrawable.java.254)
android.view.View.computeOpaqueFlags рдкрд░ (View.java:16791)
android.view.View.set.ackBackgroundDrawable рдкрд░ (View.java:21710)
android.view.View.setBackground рдкрд░ (View.java:21603)
android.view.View рдкрд░ред(View.java:5547)
android.widget.TextView рдкрд░ред(TextView.java:1135)
android.widget.EditText рдкрд░ред(EditText.java:107)
android.widget.EditText рдкрд░ред(EditText.java:103)
android.widget.EditText рдкрд░ред(EditText.java:99)
android.widget.EditText рдкрд░ред(EditText.java:95)
com.facebook.react.views.textinput.ReactEditText рдкрд░ред(ReactEditText.java:92)

рдпрд╣рд╛рдБ рдореБрджреНрджрд╛ рдХреНрдпрд╛ рд▓рдЧрддрд╛ рд╣реИ?
рдХреБрдЫ рдЬрд╛рдБрдЪ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА:
- рд╢реБрджреНрдз рдПрдВрдбреНрд░реЙрдЗрдб рдРрдк рдореЗрдВ 1000 рд╕реЗ рдЕрдзрд┐рдХ edittext рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ
- рдХреБрдЫ 200 ReactTextInput рдпрд╣рд╛рдВ рдЗрдВрдбреЗрдВрдЯ рдХрд┐рдП рдЬрд╛рдиреЗ рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд┐рдлрд▓ рд░рд╣рддрд╛ рд╣реИ

  • рдЗрд╕ рдореБрджреНрджреЗ рдХреЗ рдХреБрдЫ рд╡рд┐рд╢реНрд▓реЗрд╖рдгреЛрдВ рдореЗрдВ рд╕реНрдкрд╛рд░реНрд╕рдЕрд░реЗ рд╕реЗ рдЯреВрдЯрддреЗ рд╣реБрдП рдПрдХ рдЬрд┐рдЬреНрдЮрд╛рд╕реБ рдмрд╣реБрдЖрдпрд╛рдореА рдкрд░рд┐рджреГрд╢реНрдп рдХрд╛ рдкрддрд╛ рдЪрд▓рд╛
    - SparseArray рдереНрд░реЗрдбрд╕реЗрдлрд╝ рдирд╣реАрдВ рд╣реИ рдФрд░ рд╕рд╛рде рд╣реА рдЗрд╕рдХреЗ рдЕрдВрджрд░ gc () рдХрд╛ рддрд░реНрдХ рд╣реИ
    - SparseArray рдХрд╛ рдЙрдкрдпреЛрдЧ DrawableContainerState рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдПрдХ рдореМрдЬреВрджрд╛ рд╕реНрдерд┐рд░ рд╕реНрдерд┐рддрд┐ рдХреЗ рдбреНрд░реЙрдмрд▓ рдлреНрдпреВрдЪрд░реНрд╕ (рдпрд╣ SparseArray) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреНрд▓реЛрдирд┐рдВрдЧ рджреНрд╡рд╛рд░рд╛ рдирдпрд╛ DrawableContainerState рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
    - рдКрдкрд░ рдПрдХ рдмрд╣реБ-рдереНрд░реЗрдбреЗрдб рдирд▓рдкреЙрдЗрдВрдЯ рдЕрдкрд╡рд╛рдж рдХреЗ рд▓рд┐рдП рдПрдХ рдиреБрд╕реНрдЦрд╛ рд╣реИ рдФрд░ рдпрд╣ рдиреАрдЪреЗ рдХреЗ рд░реВрдк рдореЗрдВ рд╣реЛрддрд╛ рд╣реИ
    - рд░рд┐рдПрдХреНрдЯ рдПрдбрд┐рдЯ рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдиреЗрдЯрд┐рд╡ рдореЙрдбреНрдпреВрд▓ рдереНрд░реЗрдб рдЯреЗрдХреНрд╕реНрдЯ рд╢реИрдбреЛ рдиреЛрдб рдХреНрд░рд┐рдПрд╢рди рдФрд░ рдЗрд╕рдХрд╛ рд▓рд╛рдЗрдлрд╕рд╛рдЗрдХрд▓ рдПрдХ рдирдпрд╛ рдПрдбрд┐рдЯ рдЯреЗрдХреНрд╕реНрдЯ (рд░рд┐рдПрдХреНрдЯреЗрд╣реЗрдордбреЛрдирдЯреЗрдХреНрд╕реНрдЯ) рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдмреИрдХрдЧреНрд░рд╛рдЙрдВрдб рдбреНрд░реЙ рдХрд░рдиреЗ рдореЗрдВ рдкрд░рд┐рдгрд╛рдо рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдЕрдВрдд рдореЗрдВ рд╕реНрдкрд╛рд░реНрд╕рдЕрдпрд░реЗрдХреНрдЯ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдХреЛрдб рдХреЛ рдЗрдирд╡реЙрдЗрд╕ рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИред
    - рдпреВрдЖрдИ рдереНрд░реЗрдб рдЗрд╕ рдмреАрдЪ рдХреБрдЫ рдЕрдиреНрдп рдЖрд░рдЯреАрдЖрдИ рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдПрдХ рд╣реА SparseArray рдзрд╛рдЧрд╛ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдХреЛрдб рдХреЗ рд▓рд┐рдП рдЕрдЧреНрд░рдгреА
    - Nullpointer рдЕрдкрд╡рд╛рдж рддрдм рд╣реЛрддрд╛ рд╣реИ рдЬрдм gc () рдХреЛ рдПрдХ рд╕рд╛рде рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рд╕рд╛рде рд╣реА рдХреНрд▓реЛрди (рдпрд╣ рдХреНрд▓реЛрди рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ Drawable * class рдореЗрдВ рд╣реЛрддрд╛ рд╣реИ) рдПрдХ рд╣реА рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ рдЬреЛ рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ gc-ed рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдЬрдиреНрдо рджреЗрддрд╛ рд╣реИред рдорд╛рди рд╕рд░рдгреА рд╕реЗ рдПрдХ рдЖрдЗрдЯрдо рдЬреИрд╕рд╛ рдХреБрдЫ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рдЕрд╢рдХреНрдд рд╣реЛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди noOfItems рдзреНрд╡рдЬ рдХреЛ рдЕрднреА рддрдХ рдЕрджреНрдпрддрди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдХреНрд▓реЛрди рдХреА рдЧрдИ рд╡рд╕реНрддреБ рдореЗрдВ noOfItems рдзреНрд╡рдЬ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕реЗ рдХрдо рдПрдХ рдЖрдЗрдЯрдо рд╣реИ рдФрд░ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рд╣рдЯрд╛рдП рдЧрдП рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рдХреЗ рд▓рд┐рдП рдЕрд╢рдХреНрдд рд╕реВрдЪрдХ рдЕрдкрд╡рд╛рдж рдкреИрджрд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рд╣рдордиреЗ рдЗрд╕реЗ рдХреИрд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ рдпрд╛ рдмрдирд╛рдпрд╛?
[рез] рдпреВрдЖрдИ рдереНрд░реЗрдб рдкрд░ рдирдП рдПрдбрд┐рдЯрдЯреЗрдХреНрд╕реНрдЯ (рд╕рдВрджрд░реНрдн) рдХреЙрд▓ рдХреЛ рд▓реЗ рдЬрд╛рдПрдБ рдФрд░ рд╢реИрдбреЛрдПрдиреЛрдб рдПрд╕рд┐рдХреНрд╕ рдХреЛ рдорд╛рдкреЗрдВ рд▓реЗрдХрд┐рди рдЬрдм рддрдХ рдЗрд╕ рдПрдбрд┐рдЯ рдЯреЗрдХреНрд╕реНрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдпреВрдЖрдИ рдереНрд░реЗрдб рдкрд░ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддрдм рддрдХ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВ - рдореВрд▓ рд░реВрдк рд╕реЗ рд╢реИрдбреЛ рдиреЛрдб рдХреЛ рдлрд┐рд░ рд╕реЗ рд╕реЗрдЯ рдХрд░реЗрдВрдереАрдордЯреЗрдХреНрд╕реНрдЯ рдФрд░ рдорд╛рдк рдлрд╝рдВрдХреНрд╢рди
рдХрдорд┐рдпрд╛рдВ: рд╣рд░ рдЖрд░рдЯреАрдЖрдИ рдХреЗ рд▓рд┐рдП рдереНрд░реЗрдб рд╕реНрд╡рд┐рдЪ

[реи] рдкреГрд╖реНрдарднреВрдорд┐ рдХреЗ рд▓рд┐рдП рд╢реВрдиреНрдп рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╣реБрдП рдореВрд▓ рдореЙрдбреНрдпреВрд▓ рдкрд░ рд▓реЗрдЖрдЙрдЯ рдЗрдирдлреНрд▓реЛрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдбрд┐рдЯрдЯреЗрдХреНрд╕реНрдЯ рдмрдирд╛рдПрдВ рдФрд░ рдХреЗрд╡рд▓ рдПрдХ рдмрд╛рд░ рдпреВрдЖрдИ рдереНрд░реЗрдб рдкрд░ рдПрдХ рдПрдбрд┐рдЯрдЯреЗрдХреНрд╕реНрдЯ рдмрдирд╛рдХрд░ рдЫрд╛рдпрд╛рдВрдХрд┐рдд рдХрд░реЗрдВ рдФрд░ рд╢реИрдбреЛрдиреНрдиреЛрдб рд╕реНрддрд░ рдкрд░ рдЗрд╕рдХреА рдкреГрд╖реНрдарднреВрдорд┐ рдХреЛ рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдХреИрд╢рд┐рдВрдЧ рдХрд░реЗрдВред рдЗрд╕ drawable рдХрд╛ рдЙрдкрдпреЛрдЧ рдбреНрд░реЙрдореАрдПрдбрд┐рдЯреЗрдХреНрд╕ рдХреА рдкреГрд╖реНрдарднреВрдорд┐ рдХреЛ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдХрд┐ рдбреНрд░реЙрдмрд▓ рдмреЙрд░реНрдбрд░рд▓рд╛рдЗрди рдкреИрдбрд┐рдВрдЧреНрд╕ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓реЗрдЖрдЙрдЯ рдЗрдирдлреНрд▓реЛрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдорд╛рдкрдиреАрдп рд░рдЪрдирд╛ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдПрдХ рдмрд╛рд░ рдЗрдВрддрдЬрд╛рд░ рдХрд░рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ

рдореИрдВрдиреЗ рджреЛрдиреЛрдВ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рд╡реЗ 1024 ReactTextInput рдХреЗ рд▓рд┐рдП рдареАрдХ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред

рдиреЛрдЯ: рдЬрд╛рдВрдЪ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рдмрд╕реЗ рд╕реБрд░реБрдЪрд┐рдкреВрд░реНрдг рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд▓рдЧрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдиреНрдпреВрдирддрдо рдмрджрд▓рд╛рд╡реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рдореБрджреНрджреЗ рдХреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЛ рд╕рд╛рдмрд┐рдд рдХрд░рддрд╛ рд╣реИред

рд╕реБрдЭрд╛рд╡ рдФрд░ рдЖрд▓реЛрдЪрдирд╛рдУрдВ рдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИ!

рдЫрд╛рдпрд╛ рдиреЛрдб рдХреЛрдб:

`рдкреИрдХреЗрдЬ.richtextinput;
рдЖрдпрд╛рдд android.content.Context;
рдЖрдпрд╛рдд android.graphics.drawable.rawable;
рдЖрдпрд╛рдд android.os.Build;
рдЖрдпрд╛рдд android.text.Layout;
рдЖрдпрд╛рдд android.view.LayoutInflater;
рдЖрдпрд╛рдд android.view.ViewGroup;
рдЖрдпрд╛рдд android.widget.EditText;
рдЖрдпрд╛рдд com.facebook.infer.annotation.Assertions;
рдЖрдпрд╛рдд com.facebook.react.bridge.JSApplicationIllegalArgumentException;
рдЖрдпрд╛рдд com.facebook.react.common.annotations.VoubleForTesting;
рдЖрдпрд╛рдд com.facebook.react.uimanager.Spacing;
рдЖрдпрд╛рдд com.facebook.react.uimanager.ThemedReactContext;
рдЖрдпрд╛рдд com.facebook.react.uimanager.UIViewOperationQueue;
рдЖрдпрд╛рдд com.facebook.react.uimanager.annotations.ReactProp;
рдЖрдпрд╛рдд com.facebook.react.views.text.ReactBaseTextShadowNode;
рдЖрдпрд╛рдд com.facebook.react.views.text.ReactTextUpdate;
рдЖрдпрд╛рдд com.facebook.react.views.textinput.ReactTextInputLocalData;
рдЖрдпрд╛рдд com.facebook.react.views.view.MeasureUtil;
рдЖрдпрд╛рдд com.facebook.yoga.YogaMeasureFunction;
import com.facebook.yoga.YogaMeasureMode;
import com.facebook.yoga.YogaMeasureOutput;
рдЖрдпрд╛рдд com.facebook.yoga.YogaNode;
рдЖрдпрд╛рддрдЖрд░;

рдЖрдпрд╛рдд javax.annotation.Nullable;
// рдиреЛрдЯ: рдпрд╣ рд╡рд░реНрдЧ ReactTextInputShadowNode рд╕реЗ рдмрд╣реБрдд рднрд┐рдиреНрди рдирд╣реАрдВ рд╣реИ
// рд╡рд┐рд╖рдп рд╕рдВрджрд░реНрдн рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рдФрд░ рдорд╛рдк рдкреНрд░рджрд░реНрд╢рди рдХрд░рдирд╛
рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╡рд░реНрдЧ ReactTextInputShadowNode рдлреИрд▓реА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛
{
@VisibleForTesting
рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕реНрдерд┐рд░ рдЕрдВрддрд┐рдо рд╕реНрдЯреНрд░рд┐рдВрдЧ PROP_TEXT = "рдкрд╛рда";
рдирд┐рдЬреА рд╕реНрдерд┐рд░ рдбреНрд░рд╛рдмрд▓ 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 рдХреЛрдб рдФрд░ рдбрдореА edittext рдлреБрд▓рд╛рдП рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд▓реЗрдЖрдЙрдЯ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореЗрд░реА рдЕрдВрддрд┐рдо рдЯрд┐рдкреНрдкрдгреА рдЕрдкрдбреЗрдЯ рдХреА рдЧрдИ

@sayantanbugs - рдпрд╣ рдХреБрдЫ рдорд╣рд╛рди b рдХрд╛рдо рд╣реИ! рд╣рдо рдЗрд╕реЗ рдЕрдкрдиреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдЖрдЬрд╝рдорд╛рдПрдБрдЧреЗ рдФрд░ рд╡рд╛рдкрд╕ рд░рд┐рдкреЛрд░реНрдЯ рдХрд░реЗрдВрдЧреЗ! рдзрдиреНрдпрд╡рд╛рдж!

рд╡рд╣реА рдореБрджреНрджрд╛
рдЕрднрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓: 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
рдПрдХ рд╣реА рдореБрджреНрджрд╛, рдЗрд╕реЗ рдХреИрд╕реЗ рдареАрдХ рдХрд░реЗрдВ?

^ ^ ^ рдЕрдзрд┐рдХ рд▓реЛрдЧреЛрдВ рдХреЛ @sayantanbugs рд╕рдорд╛рдзрд╛рди рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдмрд╕ рдЕрдкрдиреЗ react-native рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдЕрдкрдиреЗ ReactTextInputShadowNode.java рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдПрдВ рдФрд░ рдЬреЛ рдХреЛрдб рдЙрд╕рдиреЗ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рд╣реИ рдЙрд╕реЗ рд╕реНрд╡реИрдк рдХрд░реЗрдВ рд╡рд╣ рдЙрд╕рдХрд╛ рдкреЛрд╕реНрдЯ рд╣реИред рдЖрдкрдХреЛ рд╕реБрдЦрдж рдЖрд╢реНрдЪрд░реНрдп рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рдПрдХ рд╕рдкреНрддрд╛рд╣ рдХреЗ рдмрд╛рдж рд╕реЗ рдореИрдВрдиреЗ рдРрд╕рд╛ рдХрд┐рдпрд╛ рд╣реИ, рдореБрдЭреЗ рд╡рд╛рдкрд╕ рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛ рд░рд╣реА рд╣реИ рдХрд┐ рддреНрд░реБрдЯрд┐ рдХреЗрд╡рд▓ рдПрдХ рдмрд╛рд░ рдлрд┐рд░ рд╕реЗ рд╣реБрдИ рд╣реИред рд▓реЗрдХрд┐рди рдЗрд╕ рдмрд╛рд░ рдпрд╣ рдЕрд▓рдЧ рдерд╛ .. рдореИрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдкреБрдирдГ рдЖрд░рдВрдн рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛ рдФрд░ react-native run-android рдорд╛рдзреНрдпрдо рд╕реЗ рдРрдк рдХреЛ рдлрд┐рд░ рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдмрд┐рдирд╛ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рдерд╛ рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рджрд░реНрдж рдерд╛ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рдореИрдВ рд╕рдЪрдореБрдЪ рдПрдХ рдЬреЛрдбрд╝реА рд╕реНрдХреНрд░реАрди рддрдХ рдкрд╣реБрдВрдЪ рдЦреЛ рджреВрдВрдЧрд╛ рдЙрди TextInputs рдХрд╛ рдкреНрд░рддрд┐рдкрд╛рджрди рдХрд┐рдпрд╛ред рдореИрдВ рддреНрд░реБрдЯрд┐ рдХрд╛ рдзреНрдпрд╛рди рд░рдЦрдирд╛ рдЬрд╛рд░реА рд░рдЦреВрдВрдЧрд╛ рдпрджрд┐ рдпрд╣ рдлрд┐рд░ рд╕реЗ рдкреНрд░рдХрдЯ рд╣реЛрддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдЕрдм рддрдХ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдореЗрд░реЗ рдЕрдВрдд рдореЗрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рд╢рд╛рдирджрд╛рд░ рдбрд┐рдмрдЧрд┐рдВрдЧ, @sayantanbugs!

@ рджреЛрд╕реНрддрд╛рдирд╛-рд░реЛрдмреЛрдЯ imo рдпрд╣ рдПрдХ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реИред рдпрд╣ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдПрдХ рд╕рдорд╛рдзрд╛рди рд╣реИред рдпрд╣ рдЙрддреНрдкрд╛рджрди рдХреЛрдб рдореЗрдВ рд╣реЛ рд░рд╣рд╛ рд╣реИ, рдЬрд╣рд╛рдВ рд╣рдо рдПрдХ рдЕрдиреБрдкрдпреЛрдЧреА рд╕рдорд╛рдзрд╛рди рдХреЛ рдкреИрдЪ рдЕрдк рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕реЗ рдЖрдк рд╕реНрд╡реАрдХрд╛рд░ рднреА рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред

рдпрджрд┐ рдпрд╣ рд╕рднреА рддрд░реАрдХреЛрдВ рд╕реЗ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рджреЗрд╡ рдкрд░ рдЧреБрд╕реНрд╕рд╛ рдХрд░ рд░рд╣рд╛ рд╣реИред рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рд▓реЛрдЧреЛрдВ рдХреЛ рд╕рдорд╛рдзрд╛рди рдХреЗ рд░реВрдк рдореЗрдВ рдЗрд╕рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЗрд░рд┐рдд рдХрд░рдирд╛ рдмреБрджреНрдзрд┐рдорд╛рдиреА рд╣реИред рдПрдХ рдкреАрдЖрд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрдзрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рд╢рд╛рдпрджред

@ рдлреНрд░реЗрдВрдбрд▓реА-рд░реЛрдмреЛрдЯ (рдлрд┐рд░ рднреА, рдзрдиреНрдпрд╡рд╛рдж @sayantanbugs ) рдХреЗ рд╕рд╛рде рд╕рд╣рдордд рд╣реБрдПред рдЖрд░рдПрди рдпрд╣рд╛рдБ рд╕реЗ рдХреЛрдИ рднреА? рдХреНрдпрд╛ рдЖрдкрдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдкреИрдЪ рдЗрд╕реЗ рдЖрд░рдПрди рд░реЗрдкреЛ рдХреЛ рдмрдирд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ?

рдареАрдХ рд╣реИ, рдореИрдВ рдЕрдВрддрддрдГ @sayantanbugs рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛, рд▓реЗрдХрд┐рди рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рдерд╛ (рдпрд╣ рдЧреИрд░-рдорд╛рд╕реНрдЯрд░ рдХреЛрдб рдкрд░ рднреА рдЖрдзрд╛рд░рд┐рдд рд╣реИ)ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдПрдХ рдЕрд╕реНрдерд╛рдпреА рд╕рдорд╛рдзрд╛рди (рдмрдирд╛рдо рдПрдХ рд░реВрдкрд░реЗрдЦрд╛ рд╕рдорд╛рдзрд╛рди) рдХреЗ рд░реВрдк рдореЗрдВ, рдЖрдк рдХреА рдЕрдкрдиреА рд╕реНрд╡рдпрдВ рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ ReactEditText рдПрдХ рд╕рдордЭреМрддрд╛ рдХреЗ рд╕рд╛рде drawableStateChanged() рд╡рд┐рдзрд┐:

  <strong i="9">@Override</strong>
  protected void drawableStateChanged() {
    try {
      super.drawableStateChanged();
    } catch (Exception e) {
      Timber.e("Prevented Drawable crash!");
    }
  }

рдпрд╣ рд╕рдЪрдореБрдЪ рдПрдХ рдкреИрдЪ рд╣реИ, рд▓реЗрдХрд┐рди рдХрдо рд╕реЗ рдХрдо рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреНрд░реИрд╢ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рдкрд╛рда рдЗрдирдкреБрдЯ рдЕрднреА рднреА рдЙрддреНрддрд░рджрд╛рдпреА рд╣реИ рдФрд░ рдЬрд╣рд╛рдБ рддрдХ рдореИрдВ рдмрддрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЙрдореНрдореАрдж рдХреЗ рдореБрддрд╛рдмрд┐рдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдЬрдм (рдЕрдм рдирд┐рд╢реНрдЪрд┐рдд) рджреБрд░реНрдШрдЯрдирд╛ рдХреЛ рдкреБрди: рдкреЗрд╢ рдХрд░рддреЗ рд╣реБрдП, рдореИрдВ рджреЗрдЦ рд╕рдХрддрд╛ рдерд╛ рдХрд┐ рдпрд╣ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЕрдкрд╡рд╛рдж рддреНрд╡рд░рд┐рдд рдЙрддреНрддрд░рд╛рдзрд┐рдХрд╛рд░ рдореЗрдВ рдХреБрдЫ рдмрд╛рд░ рд╣реБрдЖред

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ:
рд╣рдореНрдореН ... рдЬрдмрдХрд┐ рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд░рдиреЗ рд▓рдЧрддрд╛ рд╣реИ, рдРрд╕рд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдбреНрд░реЙрдмрд▓ рд╕реНрдЯреЗрдЯ рд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рджреВрд╖рд┐рдд рд╣реЛ рдЧрдпрд╛ рд╣реИред рдирдП рдЯреЗрдХреНрд╕реНрдЯ рдЗрдирдкреБрдЯ рдХреЗ рд╕рд╛рде рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдирдпрд╛ рджреГрд╢реНрдп рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рдж рднреА, рдХрд┐рд╕реА рднреА рдЯреЗрдХреНрд╕реНрдЯ рдЗрдирдкреБрдЯ рдХреЛ рдЫреВрдиреЗ рд╕реЗ рд╕рдВрджреЗрд╢ рдлрд┐рд░ рд╕реЗ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛ред рд╕реМрднрд╛рдЧреНрдп рд╕реЗ рдпрд╣ рдХреЗрд╡рд▓ рдЗрдирдкреБрдЯ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддреЗ рд╕рдордп рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдФрд░ рдкрд╛рда рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рддреЗ рд╕рдордп рдирд╣реАрдВред

рдореИрдВ рдЖрдЬ рд░рд╛рдд рдЕрдкрдиреЗ рджреГрд╢реНрдп рдФрд░ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рд╕рд╛рде рдЦреЗрд▓ рд░рд╣рд╛ рд╣реВрдВ, рдореБрдЭреЗ рдпрд╣ рддреНрд░реБрдЯрд┐ рдмреАрд╕ рдмрд╛рд░ рдорд┐рд▓реА рд╣реИ ... рдореИрдВ рдХреБрдЫ рднреА рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рдерд╛ рд▓реЗрдХрд┐рди рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЗ рдмреАрдЪ рд╕рдВрдХреНрд░рдордг рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рдиреЗрд╡рд┐рдЧреЗрдЯ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░ рд░рд╣рд╛ рдерд╛ред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдмрдбрд╝реА рдмрд╛рдд рд╣реИ: /

рд╕рдорд╛рдзрд╛рди рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж @ рдЕрдиреБрдХреВрд▓-рд░реЛрдмреЛрдЯ!

рдореЗрд░реЗ рд╕рдорд╛рдзрд╛рди рдкрд░ рдПрдХ рдкреИрдЪ рд╣реЛрдиреЗ рдХреЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рд╡рд┐рдЪрд╛рд░реЛрдВ рд╕реЗ рд╕рд╣рдордд рд╣реВрдВ рдФрд░ рдореИрдВрдиреЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдХрд┐ рдореЗрд░реЗ рдореВрд▓ рдкреЛрд╕реНрдЯ рдореЗрдВ рд╕рдорд╛рдзрд╛рди рд╢рд╛рдорд┐рд▓ рд╣реИред рдЗрд╕рдХрд╛ рдХрд╛рд░рдг рдЕрднреА рднреА рдореЗрд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╣рдордиреЗ рдЖрд░рдПрди рдЖрд░рдЯреАрдЖрдИ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рддреЗ рд╣реБрдП рдЕрдкрдиреА рддрд░рдл рдПрдХ рдФрд░ рдЕрдзрд┐рдХ рд╕рдореГрджреНрдз рдЖрд░рдЯреАрдЖрдИ рдмрдирд╛рдпрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП рд╣рдо рдЕрдкрдиреЗ рд╕рдорд╛рдзрд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрдкрдиреЗ рдХрд╕реНрдЯрдо рдЖрд░рдЯреАрдЖрдИ рдХреЗ рд╢реИрдбреЛ рдиреЙрди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╣рдорд╛рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдкреНрд░рднрд╛рд╡ рд╣рдо рдХрдИ рдЖрд░рдПрди рдХреАрдбрд╝реЗ / рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЛрдВ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд░рдПрди рдХреЗ рдПрдХ рд╕рдВрд╢реЛрдзрд┐рдд рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдмрдирд╛рдП рд░рдЦрддреЗ рд╣реИрдВ, рдФрд░ рдЗрд╕рд▓рд┐рдП рд╣рдо рдЗрди рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рдЙрд╕ рдкрд░ рднреА рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдореИрдВ рдЕрдиреНрдп рд╕рдВрднрд╛рд╡рдирд╛рдУрдВ рдкрд░ рдЗрд╕реЗ рджреВрд╕рд░рд╛ рд░реВрдк рджреЗрдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛ рд░рд╣рд╛ рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рдЙрд╕ рд╕рдордп рдХреЗ рджреМрд░рд╛рди рдХреБрдЫ рджрд┐рдиреЛрдВ рдХреЗ рджреМрд░рд╛рди рд╣рд╛рде рдореЗрдВ рдЬрд▓рддреЗ рдореБрджреНрджреЗ рдХреЛ рд╣рд▓ рдХрд░рдирд╛ рдерд╛ред

рдЖрдкрдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!

@davidmontemayor , рдЕрдЧрд░
рдпрд╣ рд╣рдореЗрдВ рдпрд╣ рд╕реЛрдЪрдиреЗ рдкрд░ рдордЬрдмреВрд░ рдХрд░ рд░рд╣рд╛ рд╣реИ рдХрд┐ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╣рдо ShadowNode рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦ рд░рд╣реЗ рд╣реЛрдВ, рдЬреИрд╕реЗ рдХрд┐ рд╣рдореЗрдВ EditText рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЙрдкрд╛рдп рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдореЗрд░реЗ рд▓рд┐рдП рднреА рд╣реЛрддрд╛ рд╣реИред рдореИрдВ рд╕реНрдХреНрд░реЛрд▓рд╡реНрдпреВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред
рд╕реНрдХреНрд░реЛрд▓рд╡реНрдпреВ рдореЗрдВ рдореЗрд░реЗ рдкрд╛рд╕ рд╡рд┐рднрд┐рдиреНрди рдирд┐рдпрдВрддреНрд░рдг (рд░реЗрдбрд┐рдпреЛ, рд╕реВрдЪреА, рд╕рдВрдкрд╛рджрди, рдЖрджрд┐) рд╣реИрдВред рдореИрдВ рдХрд╣реВрдВрдЧрд╛ рдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рдЕрдзрд┐рдХрддрдо 10 рдирд┐рдпрдВрддреНрд░рдг рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдмрд╣реБрдд рдмрдбрд╝реА рд╕реВрдЪреА рдирд╣реАрдВ рд╣реИред
рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЗрд╕реЗ рдкреБрди: рдкреЗрд╢ рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕рдордп рдкрд░ рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЬрдм рдореИрдВ рд╕реНрдХреНрд░реАрди рдкрд░ рд╕реНрдХреНрд░реЙрд▓ рджреГрд╢реНрдп (рдЗрд╕рдореЗрдВ рд╕рдВрдкрд╛рджрди рдирд┐рдпрдВрддреНрд░рдг рдХреЗ рд╕рд╛рде) рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рддреЛ рдореИрдВ рдЗрд╕реЗ рдкреГрд╖реНрдарднреВрдорд┐ рд╕реЗ рдРрдк рдХреЛ рдЕрдЧреНрд░рднреВрдорд┐ рдореЗрдВ рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЯреНрд░реИрдХ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред
рд╣рд╛рд▓рд╛рдВрдХрд┐ 100% рдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ
рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реЛ рд░рд╣рд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдПрдВрдбреНрд░реЙрдЗрдб рд╕рдкреЛрд░реНрдЯ рд╡рд░реНрдЬрди рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИред

рдПрдлрдмреА рдкрд░ рдЖрдУ, рдЗрд╕ рдмрдЧ рдХреЛ рдареАрдХ рдХрд░реЗрдВред
рдЬрдм рд╣рдо рдЗрд╕ рддрд░рд╣ рд╕реЗ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдХреНрд░реИрд╢ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЙрддреНрдкрд╛рджрди рдЧреБрдгрд╡рддреНрддрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдирд╛ рдХрдард┐рди рд╣реЛрддрд╛ рд╣реИред

com.facebook.react.views.textinput.ReactEditText
рдЖрд░рдПрди 0.54
Android рдПрд╕рдбреАрдХреЗ 27
рдлреЛрди 8.1

рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЗ рд╣реЛрдиреЗ рдХреЗ рд╕рд╛рде-рд╕рд╛рде, рд╕реНрдХреНрд░реЙрд▓-рд╡реНрдпреВ рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред @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 рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рд╡рд┐рдлрд▓рддрд╛рдУрдВ рд╕реЗ рдирд┐рдкрдЯрдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред рдкреГрд╖реНрдарднреВрдорд┐ рдХреЗ рд▓рд┐рдП, _two_ рдЕрд▓рдЧ-рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╣реИрдВ рдЬреЛ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдкреНрд░рдХрдЯ рд╣реЛрддреА рд╣реИ:

  • рдЬрдм ReactEditText рдХреЛ рддрддреНрдХрд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ ( android.widget.EditText.<init>(EditText.java:95) )
  • рдЬрдм ReactEditText рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХреА рдЬрд╛рддреА рд╣реИ ( android.widget.TextView.onTouchEvent(TextView.java:8467) )

рдореБрдЦреНрдп рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдмрдирд╛рдП рдЧрдП рджреГрд╢реНрдп рдХреЛ ReactTextInputShadowNode рдореЗрдВ рдмрджрд▓рдирд╛ рд╣реИред new EditText(getThemedContext()) рдХрд░рдиреЗ рджреЗрдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдЕрдкрдиреА рдЦреБрдж рдХреА рдХреНрд▓рд╛рд╕ рдмрдирд╛рдПрдБ рдЬреЛ EditText рд╕реЗ рдлреИрд▓реА рд╣реЛред рддрдм рдЖрдк drawableStateChanged() рдореЗрдВ рджреВрд╕рд░реЗ рдкрде рдХреЗ рдХрд╛рд░рдг рдЕрдкрд╡рд╛рдж рдХреЛ рдкрдХрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред

рдкреНрд░рд╛рд░рдВрднрд┐рдХ рддреНрд░реБрдЯрд┐ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдареАрдХ рдХрд░ рд░рд╣рд╛ рд╣реИред рдЗрд╕рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдПрдХ "рдбреНрд░реЙрдПрдмрд▓ рд░реИрдкрд░" рдХреНрд▓рд╛рд╕ рдмрдирд╛рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рд╕реА рднреА рдУрдПрд▓ 'рдбреНрд░рд┐рдмрд▓ рдХреЛ рд▓рдкреЗрдЯрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ EditText.setBackground() рдореЗрдВ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рд░реИрдкрд░ рдХреЛ рддрдм рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдХреЗ рджреНрд╡рд╛рд░рд╛ рдлреЗрдВрдХреЗ рдЬрд╛ рд░рд╣реЗ рдЕрдкрд╡рд╛рджреЛрдВ рдХреЛ рдкрдХрдбрд╝рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдЕрднреА рднреА рдмреЗрддрд░рддреАрдм рдврдВрдЧ рд╕реЗ рд░рд┐рдПрдХреНрдЯ рдиреЗрдЯрд┐рд╡ рдХреЗ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг + рдЬреЗрдПрд╕рд╕реА + рдХреЗ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде 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

рдореИрдВрдиреЗ рдПрдВрдбреНрд░реЙрдЗрдб 8.0.0 рдФрд░ RN 0.55.3 рдХреЗ рд╕рд╛рде рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рджреЗрдЦрдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ рд╣реИред рдХреНрдпрд╛ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЙрдирдХрд╛ рдХреЛрдИ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдпрд╛ рдкреАрдЖрд░ рд╢рд╛рдпрдж рд╣реИ?

рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рдмреЗрддрд░рддреАрдм рдврдВрдЧ рд╕реЗ рднреА TextInputs рдХреЗ рдПрдХ рдлреНрд▓реИрдЯрд┐рд╕реНрдЯ рдХреЗ рд╕рд╛рде

  • рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓: 0.55.4

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

рдкрдврд╝рдиреЗ рдФрд░ рдбрд┐рдмрдЧрд┐рдВрдЧ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдореИрдВрдиреЗ рдЗрд╕ рд╕рдкреНрддрд╛рд╣ рдХреЗ рдЕрдВрдд рдореЗрдВ рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рд╣реИ ...

  1. рдореЗрд░реЗ рдХреЛрдб рд╕реЗ рд╕рднреА рдЕрдВрдбрд░рд▓рд╛рдЗрдирд░ рдХреЙрд▓ рд╣рдЯрд╛рдПрдВ (рдореИрдВ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓-рддрддреНрд╡ 0.19 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ)

    • рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ EditText рдирд┐рдпрдВрддреНрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдкрд╛рд░рджрд░реНрд╢реА рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдордмреИрдХ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП
    • рдкрд╛рд░рджрд░реНрд╢реА рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░рдиреЗ рдХрд╛ рднреА рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ
  2. рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдореЗрд░реА 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>
  1. рдЯреЗрд╕реНрдЯ - рдЯреЗрд╕реНрдЯ - рдЯреЗрд╕реНрдЯред рд╕рдорд╕реНрдпрд╛ рдХреЛ рдкреБрди: рдкреЗрд╢ рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЖрдЬ рд╕реБрдмрд╣ рдПрдХ рдЧреНрд░рд╛рд╣рдХ рдЙрд╕ рдкрд░ рдЯреВрдЯ рдкрдбрд╝рд╛ред

  2. рдПрдХ рдЧрд┐рд░рд╛рд╡рдЯ рдХреЗ рд░реВрдк рдореЗрдВ, @sayantanbugs рд╕реЗ рдлрд┐рдХреНрд╕ рд▓рд╛рдЧреВ рдХрд░реЗрдВ
    4.1 рдЕрджреНрдпрддрди рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓-рддрддреНрд╡ 1.0xx рдмреАрдЯрд╛ рдХреЛ

рд░реАрдбрд┐рдВрдЧ
https://issuetracker.google.com/issues/37068452
https://github.com/facebook/react-native/issues/18214

рдЖрд░рдПрди 0.54
рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓-рддрддреНрд╡ 0.19

рдЖрд░рдПрди 0.56.0 рдПрдВрдбреНрд░реЙрдЗрдб 8.1.0 рдкрд░ рд╣реЛрддрд╛ рд╣реИ
рдЖрд╢реНрдЪрд░реНрдп рд╣реИ рдХрд┐ рдЕрдЧрд░ рдЗрд╕реЗ рдЖрдЧреЗ рдмрдврд╝рд╛рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рд╣реИред

рдХреЗ рд╕рднреА рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ рдмрджрд▓рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ
underlineColorAndroid={"transparent"}
рд╕рд╛рде рдореЗрдВ
underlineColorAndroid={"#00000000"}

рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд╣реЛрдиреЗред рдЗрд╕реЗ рдХреБрдЫ рдореБрд╢реНрдХрд┐рд▓ рд╕реЗ рд╣рд▓ рдХрд░реЗрдВред рдПрдХ рдмрдЯрди рдмрдирд╛рдПрдВ рдЬреЛ рд╡рд░реНрддрдорд╛рди рдЗрдирдкреБрдЯ рдХреЗ рд░реЗрдВрдбрд░ рдХреЛ рд╣реИрдВрдбрд▓ рдХрд░рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдмрдЯрди рдХреЗ рдлреНрд▓реИрдЯ рд▓рд┐рд╕реНрдЯ рд╣реИрдВ рдФрд░ рдХреЗрд╡рд▓ 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 рд╕рдкреНрддрд╛рд╣ рд╕реЗ рдЕрдзрд┐рдХ рдФрд░ рдореИрдВрдиреЗ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдирд╣реАрдВ рджреЗрдЦрд╛ рд╣реИред
рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЕрдзрд┐рдХ рдкрд░реАрдХреНрд╖рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ;)

рдпрд╣ рд╕рдорд╕реНрдпрд╛ рд╣рдорд╛рд░реЗ рдРрдк рдХреЛ рдЙрддреНрдкрд╛рджрди рдореЗрдВ рднреА рджреБрд░реНрдШрдЯрдирд╛ рдХрд╛ рдХрд╛рд░рдг рдмрдирд╛ рд░рд╣реА рд╣реИред рдпрд╣ рдПрдХ рдмреБрд░рд╛ рдмрдЧ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕реЗ рдкреБрди: рдкреЗрд╢ рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИред рд╣рдореЗрдВ рдЕрдкрдиреЗ рдРрдк рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрд╢рд╛рдЬрдирдХ рдирд┐рд░реНрдзрд╛рд░рдг рдорд┐рд▓рд╛ рд╣реИ, рдФрд░ рдореИрдВ рдХреБрдЫ рд╕рдордп рдФрд░ рдирд┐рд░рд╛рд╢рд╛ рд╕реЗ рджреВрд╕рд░реЛрдВ рдХреЛ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рдирд┐рд╖реНрдХрд░реНрд╖реЛрдВ рдХреЛ рдпрд╣рд╛рдВ рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред

рдЪрд╢реНрдорд╛ рдФрд░ рд╕рдВрд╕реНрдХрд░рдг

рдЗрд╕ рдмрдЧ рдХреЗ рдХрд╛рд░рдг рд╣рдорд╛рд░рд╛ рдРрдк рд╕реИрдорд╕рдВрдЧ, Google рдФрд░ рдПрд▓рдЬреА рдПрдВрдбреНрд░реЙрдЗрдб рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рдХреНрд░реИрд╢ рд╣реЛ рдЧрдпрд╛ рд╣реИред рд╣рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд Android рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рд╕реЗ рдХреНрд░реИрд╢ рд░рд┐рдкреЛрд░реНрдЯ рдорд┐рд▓реА рд╣реИ:

  • 8.0.0
  • 8.1.0
  • 7.1.1

рд╣рдорд╛рд░рд╛ рдРрдк рдЪрд▓ рд░рд╣рд╛ рд╣реИ:

  • react-native : 0.53.0
  • react : 16.2.0

рдХреНрдпрд╛ рджреБрд░реНрдШрдЯрдирд╛ рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИ

рдЬреИрд╕реЗ рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ рдиреЗ рдЗрд╕ рд╕реВрддреНрд░ рдореЗрдВ рдиреЛрдЯ рдХрд┐рдпрд╛ рд╣реИ, TextInput , FlatList , рдФрд░ ScrollView рдШрдЯрдХреЛрдВ рдХреЗ рдХреБрдЫ рд╕рдВрдпреЛрдЬрди рдкреНрд░рджрд╛рди рдХрд░рдХреЗ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рд╕реНрдХреНрд░реАрди рд╣реИ, рдЬрд┐рд╕рдореЗрдВ TextInput FlatList ред рдЬрдм FlatList рдореЗрдВ рдХрд┐рд╕реА рдПрдХ рдЖрдЗрдЯрдо рдХреЛ рдЯреИрдк рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдРрдк рдПрдХ рдирдИ рд╕реНрдХреНрд░реАрди рдкрд░ рдиреЗрд╡рд┐рдЧреЗрдЯ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдПрдХ рдлреЙрд░реНрдо рд╣реЛрддрд╛ рд╣реИред рдЗрд╕ рдлреЙрд░реНрдо рдХрд╛ рдореВрд▓ рдШрдЯрдХ рдПрдХ ScrollView рд╣реИ рдЬрд┐рд╕рдореЗрдВ TextInput рдШрдЯрдХреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╣реЛрддреА рд╣реИ (рдХреБрдЫ рдмрдЯрди рдФрд░ рдЕрдиреНрдп рдХрд╕реНрдЯрдо рдШрдЯрдХреЛрдВ рдХреЗ рд╕рд╛рде)ред рдЬрдм рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрди FlatList рдЖрдЗрдЯрдореЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдкрд░ рдЯреИрдк рдХрд░рддрд╛ рд╣реИ рддреЛ рд╣рдорд╛рд░рд╛ рдРрдк рдХреНрд░реИрд╢ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ (рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдпрд╣ _every_ time рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ)ред

рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╣рдо рдРрд╕рд╛ рдХрд░рдиреЗ рдореЗрдВ рдЕрд╕рдорд░реНрде рд░рд╣реЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рд╣рдо рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рд╣рдорд╛рд░реЗ 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)

рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕реНрд░реЛрдд

рдЗрд╕ рдзрд╛рдЧреЗ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрдврд╝рдиреЗ рдФрд░ рдХреБрдЫ рдШрдВрдЯреЛрдВ рдпрд╛ рд╢реЛрдз рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВрдиреЗ ReactTextInputManager.java рдлрд╝рд╛рдЗрд▓ рдореЗрдВ underlineColorAndroid рд╣реИрдВрдбрд▓рд░ рдкрд╛рдпрд╛:

@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() рдмрдЧ рдХрд╛ рдЯреНрд░рд┐рдЧрд░ рд╣реЛрдирд╛ рд╣реИред рдРрд╕рд╛ рддрдм рд╣реЛрддрд╛ рд╣реИ рдЬрдм рд╣рдо рдЕрдкрдиреЗ TextInput рдШрдЯрдХ рдкрд░ underlineColorAndroid рдкреНрд░реЛрдк рд╕реЗрдЯ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ (рдФрд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░ 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 рдШрдЯрдХреЛрдВ рд╕реЗ рдЕрдВрдбрд░рд▓рд╛рдЗрди рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдкреНрд░реЛрдк рдХреЛ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереАред рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реЗ рдирд┐рд╖реНрдХрд░реНрд╖реЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдЗрд╕рдХрд╛ рдкреНрд░реЛрдк рд╣реИрдВрдбрд▓рд░ рдПрдХ рдПрдВрдбреНрд░реЙрдЗрдб рдмрдЧ рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд░рддрд╛ рд╣реБрдЖ рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛, рдЬрд┐рд╕рд╕реЗ рдРрдк рдХрднреА-рдХрднреА рдХреНрд░реИрд╢ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред

рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдПрдВрдбреНрд░реЙрдЗрдб рдкрд░ TextInput рдШрдЯрдХреЛрдВ рд╕реЗ рдЕрдВрдбрд░рд▓рд╛рдЗрди рдХреЛ рд╣рдЯрд╛рдиреЗ рдХрд╛ рдПрдХ рдФрд░ рддрд░реАрдХрд╛ рд╣реИред рдЖрдк 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 рдкреНрд░реЛрдк TextInput рдШрдЯрдХреЛрдВ рдХреЗ рдЙрдкрдпреЛрдЧ рд╕реЗ рдмрдЪрдирд╛ рд╢рд╛рдорд┐рд▓ рд╣реИред

рдореИрдВ рдЕрднреА рддрдХ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдпрд╣ рдирд╣реАрдВ рдХрд╣ рд╕рдХрддрд╛ рдХрд┐ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рд╕реНрдерд╛рдиреАрдп рд╕реНрддрд░ рдкрд░ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдкреБрди: рдкреЗрд╢ рдХрд░рдиреЗ рдореЗрдВ рдЕрд╕рдорд░реНрде рд░рд╣рд╛ рд╣реВрдВред рд╣рдо рдЖрдиреЗ рд╡рд╛рд▓реЗ рд╣рдлреНрддреЛрдВ рдореЗрдВ рдЗрд╕ рдмрджрд▓рд╛рд╡ рдХреЛ рдЕрдкрдиреЗ рдРрдк рдореЗрдВ рдЕрдкрдбреЗрдЯ рдХрд░ рджреЗрдВрдЧреЗред рдЙрд╕рдХреЗ рдмрд╛рдж, рд╣рдореЗрдВ рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдереЛрдбрд╝реА рджреЗрд░ рдЗрдВрддрдЬрд╛рд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдЕрдм рд╣реЛрддрд╛ рд╣реИред рдореИрдВ рдЕрдкрдиреЗ рдирд┐рд╖реНрдХрд░реНрд╖реЛрдВ рдХреЗ рд╕рд╛рде рд╡рд╛рдкрд╕ рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ред

рдЗрд╕ рдирд┐рд░рд╛рд╢рд╛рдЬрдирдХ рдореБрджреНрджреЗ рдХреЗ рд╕рд╛рде рдХреБрд╢реНрддреА рдореЗрдВ рд╣рд░ рдХрд┐рд╕реА рдХреЛ рд╢реБрднрдХрд╛рдордирд╛рдПрдБ! рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдпреЗ рдЖрдкрдХреА рдорджрдж рдХрд░реЗрдЧрд╛ред

рдзрдиреНрдпрд╡рд╛рдж @ рд╣рд╛рдкрд┐рдВрдЧ рдЬрд╛рд╣рд┐рд░ рд╣реИ рдХрд┐ рдЖрдкрдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ!

@Hopding
рд╣рд╛рдВ рдХрд╛рдо рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж

рд╣рдорд╛рд░реЗ рд▓рд┐рдП, рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдФрд░ рдРрд╕реА рд╣реА рддрдорд╛рдо рд╕рдорд╕реНрдпрд╛рдПрдВ рдЬрд╣рд╛рдВ рдЖрдк рдПрдВрдбреНрд░реЙрдЗрдб рдореЗрдВ рдПрдХ рд╢реВрдиреНрдп рд╕рдВрджрд░реНрдн рдкрд░ рдХреЙрд▓рд┐рдВрдЧ рд╡рд┐рдзрд┐ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рддреЗ рд╣реИрдВ , рдРрдк рдореЗрдВ рдЙрдЪрд┐рдд рд╢реИрд▓реА рдирд╣реАрдВ рд╣реЛрдиреЗ рдХреЗ рдХрд╛рд░рдг рд╣реЛрддреА

рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдЕрдзрд┐рдХрд╛рдВрд╢ 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 рдХреЗ рдлрд┐рдХреНрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╕рдордп рдпрд╣ рдореЗрд░реЗ

рдЕрдкрдбреЗрдЯ: @ рд╣реИрдбрд┐рдВрдЧ рд╢реИрд▓реА рдХреЛ рдЗрд╕ рддрд░рд╣ рд╕реЗ рд▓рд┐рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ

    <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>

рдореБрдЭреЗ рд▓реЗрдЖрдЙрдЯ рдХреЛ рддреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЧрджреНрджреА рдХреЛ рдЬреЛрдбрд╝рдирд╛ рдерд╛ред

@ рдЧреЗрд╡рд┐рди-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>

`

рд╣рдЯрд╛рдпрд╛ рдЧрдпрд╛ рдЕрдВрдбрд░рд▓рд╛рдЗрдирд░рдСрдиреНрдбреНрд░реЛрдЗрдб = "рдкрд╛рд░рджрд░реНрд╢реА"

рдФрд░ рдмрджрд▓ рджрд┐рдпрд╛ рд╢реИрд▓реАред xml


рдореЗрд░реЗ рд▓рд┐рдП рдпрд╣ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ

рдЙрдкрд░реЛрдХреНрдд рд╕рдорд╛рдзрд╛рди рдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдиреЗ рднреА рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдЬрд╛рд╣рд┐рд░рд╛ рддреМрд░ рдкрд░ рдРрдк рдХреЛ рдмрдВрдж рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдкреИрдХрд░ рдФрд░ рдлрд┐рд░ рд╕реЗ рдХрд╛рдо рдХрд┐рдпрд╛ред

рдмрд╕ рдЕрдкрдирд╛ рдРрдк рдбреЗрдЯрд╛ рд╕рд╛рдлрд╝ рдХрд░реЗрдВ рдФрд░ рдлрд┐рд░ рд╕реЗ рдЪрд▓рд╛рдПрдВ

рдзрдиреНрдпрд╡рд╛рдж @WilliamAlexander рдФрд░ @ рдШреЛрд▓ рдЙрдирдХреЗ рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рд┐рдП, рд▓реЗрдХрд┐рди рдЬрдм рдореИрдВ рдкреГрд╖реНрдарднреВрдорд┐ рдмрджрд▓рддрд╛ рд╣реВрдВ рддреЛ рдпрд╣ рдореЗрд░реЗ InputText рдХреА рдкреИрдбрд┐рдВрдЧ рдХреЛ рднреА рд╣рдЯрд╛ рджреЗрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рдореИрдВрдиреЗ рдмреИрдХрдЧреНрд░рд╛рдЙрдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдФрд░ рдпрд╣ рдкреИрдбрд┐рдВрдЧ рдореЗрдВ рдХрд┐рд╕реА рднреА рдмрджрд▓рд╛рд╡ рдХреЗ рдмрд┐рдирд╛ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ

`` ``

<style name="AppEditTextStyle" parent="@style/Widget.AppCompat.EditText">
    <item name="backgroundTint"><strong i="12">@android</strong>:color/transparent</item>
</style>

`` ``

рдареАрдХ рд╣реИ, рдХреНрдпрд╛ рдПрдХреНрд╕рдкреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдЫреЛрдбрд╝рдХрд░ рдХреЛрдИ рд╕рдорд╛рдзрд╛рди рд╣реИ?

@ рдЯрд┐реНрд╡рд╕реНрдХрд╛ рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рдЖрдкрдХреЛ рдХрдЪреНрдЪреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓рдХ рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдПрдХреНрд╕рдкреЛрдХрд┐рдЯ рдореЗрдВ рдПрдХ рд╣реА рдореБрджреНрджреЗ рд╣реИрдВред

рдореИрдВ рдЕрдкрдиреЗ рдРрдк рдореЗрдВ рдХрд╣реАрдВ рднреА underlineColorAndroid рд╕реЗрдЯ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдлрд┐рд░ рднреА рдореБрдЭреЗ рдпрд╣ рд▓реЙрдЧ рдореЗрд░реЗ рдлрд╛рдпрд░рдмреЗрд╕ рдХрдВрд╕реЛрд▓ рдореЗрдВ рдорд┐рд▓рд╛ред рдФрд░ рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдлрд┐рд░ рд╕реЗ рдХреИрд╕реЗ рдкреБрди: рдкреЗрд╢ рдХрд┐рдпрд╛ рдЬрд╛рдПред

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)

рд░рдВрдЧреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рддреЗ рд╣реБрдП рдореЗрд░реЗ рдкрд╛рд╕ рдкреНрд▓реЗрд╕рд╣реЛрд▓реНрдбрд░рдЯреЗрдХреНрд▓реЛрдХреНрд▓реЙрд░ рдФрд░ рдмреЙрд░реНрдбрд░рдХреЛрд▓рд░ рд╣реИ рдЬреЛ #acacac рдФрд░ рдЬрдм рдХреБрдЫ рд╕рддреНрдпрд╛рдкрди рд╕рдорд╕реНрдпрд╛ рд╣реЛрддреА рд╣реИ рддреЛ рдмреЙрд░реНрдбрд░ red ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдореИрдВ underlineColorAndroid рднреА рд╕реЗрдЯ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдБред

рдХрд┐рд╕реА рднреА рдорджрдж рдХреА рд╕рд░рд╛рд╣рдирд╛ рдХреА рд╣реИред

@mddanishansari рдЪреВрдВрдХрд┐ rn 0.56 underlineColorAndroid рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ , рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдКрдкрд░ рдмрддрд╛рдП рдЧрдП рдлрд┐рдХреНрд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

@mddanishansari рдЪреВрдВрдХрд┐ rn 0.56 underlineColorAndroid рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ , рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдКрдкрд░ рдмрддрд╛рдП рдЧрдП рдлрд┐рдХреНрд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдмрд╣реБрдд рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рджред рдореБрдЭреЗ рдЗрддрдиреА рдЬрд▓реНрджреА рдЬрд╡рд╛рдм рдХреА рдЙрдореНрдореАрдж рдирд╣реАрдВ рдереАред рдореБрджреНрджрд╛ рдпрд╣ рд╣реИ рдХрд┐ рддрдм рдЕрдиреНрдп рд╕рднреА рдореВрд▓ рдореВрд▓ EditText рдкреГрд╖реНрдарднреВрдорд┐ рднреА рдкрд╛рд░рджрд░реНрд╢реА рд╣реИ рдЬреЛ рдЕрдЬреАрдм рд▓рдЧрддрд╛ рд╣реИред рдореЗрд░реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рдХреБрдЫ рд╕реНрдХреНрд░реАрди рдореВрд▓ рдореВрд▓ (рдЬрд╛рд╡рд╛) рдореЗрдВ рднреА рд╣реИрдВред

рдореИрдВ рдмрд╕ рд╕реЛрдЪ рд░рд╣рд╛ рдерд╛ рдХрд┐ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреИрд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╕рдорд╛рдзрд╛рди рдХреЗрд╡рд▓ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд╣реИрдХ рд╣реИред рд╕рд╣реА?

рд╣рд╛рдп рджреЛрд╕реНрддреЛрдВред рдЗрд╕рд▓рд┐рдП, рдЕрдВрдбрд░рд▓рд╛рдЗрдирдХреЛрд▓рд░рдПрдВрдбреНрд░реЛрдЗрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рд╕реА рднреА рддрд░рд╣ рдЗрд╕ рджреБрд░реНрдШрдЯрдирд╛ рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рд▓реЗрдХрд┐рди рдЕрдм, рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЕрдВрдбрд░рд▓рд╛рдЗрдирдХреЛрдиреНрдбреЗрд░реЙрдпрдб рдХреЛ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЗрд╕ рдХреЗ рдЙрдкрдпреЛрдЧ рд╕реЗ рдХреИрд╕реЗ рдмрдЪрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рд╕реНрдЯрд╛рдЗрд▓.рдПрдХреНрд╕рдПрдордПрд▓ рдХреЛ рдХрдордмреИрдХ?

рд╕рд╛рджрд░

рдмрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдпрд╣ рдХрд┐рд╕реА рдХреА рдорджрдж рдХрд░рддрд╛ рд╣реИред рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдореИрдВ рдЧрд▓рддреА рд╕реЗ NaN рднреЗрдЬ рд░рд╣рд╛ рдерд╛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд░рдВрдЧ рдореВрд▓реНрдп рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдпрд╣ рдореЗрд░реЗ рд╕рд╛рде рд╣реБрдЖ рдерд╛ 'рдмреЙрд░реНрдбрд░рдмреЙрдЯрдо рд▓реЙрдлреНрдЯрд░реЗрдбрд┐рдпрд╕' рдореЗрдВ Iphone рдХреЗ рд╕рд╛рде рд╕рд┐рд░реНрдл рдПрдВрдбреНрд░реЙрдЗрдб рдХреЗ рд╕рд╛рде рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рдереАред

рдЗрд╕ рд╕реВрддреНрд░ рдореЗрдВ рд╕рдорд╛рдзрд╛рди рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЬрдм рдореЗрд░реЗ рд╕рднреА textinputs рдХреЗ рд▓рд┐рдП underlineColorAndroid рдХреБрдЫ рдЧреИрд░ рдкрд╛рд░рджрд░реНрд╢реА (рдореИрдВ '#f00' рд╕рд╛рде рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЧрдпрд╛) рд╕реЗрдЯ рдХрд░рддреЗ рд╣реБрдП рднреА, рдореИрдВ рдЕрднреА рднреА рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рдЕрдиреБрднрд╡ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред

рдореЗрд░реЗ рд▓рд┐рдП рд╕рдорд╕реНрдпрд╛ рд▓рдЧрд╛рддрд╛рд░ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рд╕реНрдХреНрд░реЙрд▓ рджреГрд╢реНрдп рдХреЗ рднреАрддрд░ TextInputs рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ рд╣реИ, рдФрд░ рдЗрд╕реЗ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдореБрдЭреЗ рдХрдИ рдмрд╛рд░ рд╕реНрдХреНрд░реАрди рдХреЛ рдЦреЛрд▓рдирд╛ рдФрд░ рдмрдВрдж рдХрд░рдирд╛ рд╣реЛрдЧрд╛

рдпрд╣ рддреНрд░реБрдЯрд┐ рдХрд╛ рдХрд╛рд░рдг рдмрдирдиреЗ рд╡рд╛рд▓реА рдкрд╛рд░рджрд░реНрд╢рд┐рддрд╛ рдирд╣реАрдВ рд╣реИ, рдпрд╣ рдкрд░рд┐рд╡рд░реНрддрди рд╣реИ
рджреЗрд╢реА рд░рдВрдЧ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдореВрд▓ рдирд┐рд╡рд╛рд╕реА рд╕реЗред рдпрд╣ рд▓рдЧрднрдЧ рд╕рднреА рдХреЛ рд╣реИ
рдореВрд▓ рдХреЗ рд╕рд╛рде рдореВрд▓ рд░реЗрдЦрд╛рдВрдХрди рдХреЛ рдкрд╛рд░рджрд░реНрд╢реА рдмрдирд╛рддрд╛ рд╣реИред

рдмреБрдз рдкрд░, 6 рдлрд░рд╡рд░реА, 2019, 10:23 рдЕрдкрд░рд╛рд╣реНрди рдПрдбреНрд░рд┐рдПрди рдкрд╛рдЗрдХреЗ рд╕реВрдЪрдирд╛рдПрдВ @github.com рдиреЗ рд▓рд┐рдЦрд╛ рд╣реИ:

рдЗрд╕ рд╕реВрддреНрд░ рдореЗрдВ рд╕рдорд╛рдзрд╛рди рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рд╕реЗрдЯрд┐рдВрдЧ рдХрд░рддреЗ рд╕рдордп рднреА
рдХреБрдЫ рдЧреИрд░ рдкрд╛рд░рджрд░реНрд╢реА рдХреЗ рд▓рд┐рдП рдореЗрд░реЗ рд╕рднреА textinputs рдХреЗ рд▓рд┐рдП underlineColorAndroid
(рдореИрдВрдиреЗ '# f00' рдХреЗ рд╕рд╛рде рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛), рдореИрдВ рдЕрднреА рднреА рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рдЕрдиреБрднрд╡ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред

рдореЗрд░реЗ рд▓рд┐рдП рд╕рдорд╕реНрдпрд╛ рд▓рдЧрд╛рддрд╛рд░ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред рдореЗрд░реЗ рдкрд╛рд╕ TextInputs рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ рд╣реИ
рд╕реНрдХреНрд░реЙрд▓рд╡реНрдпреВ рдХреЗ рднреАрддрд░, рдФрд░ рдореБрдЭреЗ рдХрдИ рдмрд╛рд░ рд╕реНрдХреНрд░реАрди рдХреЛ рдЦреЛрд▓рдирд╛ рдФрд░ рдмрдВрдж рдХрд░рдирд╛ рд╣реЛрдЧрд╛
рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП

-
рдЖрдк рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдиреЗ рдЯрд┐рдкреНрдкрдгреА рдХреА рд╣реИред
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рдЙрддреНрддрд░ рд╕реАрдзреЗ рджреЗрдВ, рдЗрд╕реЗ 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

рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ рдХрд┐ рддреНрд░реБрдЯрд┐ рдЕрднреА рднреА рдореЗрд░реЗ рд▓рд┐рдП рд╣реЛрддреА рд╣реИ

рдореИрдВрдиреЗ рдЖрд░рдПрди 58.3 рдПрдВрдбреНрд░реЙрдЗрдб рдкрд░ рдЗрд╕ рдмрдЧ рдХрд╛ рдЕрдиреБрднрд╡ рдХрд┐рдпрд╛ред рдХреЛрдИ рд╕реНрдкрд╖реНрдЯ рддреБрдХ рдпрд╛ рдХрд╛рд░рдг рдирд╣реАрдВ рдерд╛, рд╕рд┐рд╡рд╛рдп рдЗрд╕рдХреЗ рдХрд┐ рдЬрдм рднреА рдореИрдВ TextInput рдШрдЯрдХ рдкреНрд░рджрд╛рди рдХрд░рддрд╛, рддреНрд░реБрдЯрд┐ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рддреАред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЕрдЧрд░ рдореИрдВ рдмрд┐рдирд╛ рдХрд┐рд╕реА рд╕рд╣рд╛рд░рд╛ рдпрд╛ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рд╕рд╛рде рдПрдХ TextInput рдЧрд╛рдпрд╛, рдпрд╣ рдЕрднреА рднреА рджреБрд░реНрдШрдЯрдирд╛ рд╣реЛрдЧреАред

рдореИрдВрдиреЗ рдореЗрдЯреНрд░реЛ рдХреЛ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд░рдиреЗ рдФрд░ рдХреИрд╢ рдХреЛ рд░реАрд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рд▓реЗрдХрд┐рди рд╡рд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ред рдореБрдЭреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдВрдбреНрд░реЙрдЗрдб рд╕реНрдЯреВрдбрд┐рдпреЛ рдЦреЛрд▓рдирд╛ рдерд╛ рдФрд░ рдРрдк рдХреЛ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдирд╛ рдерд╛, рдЬрд┐рд╕ рдмрд┐рдВрджреБ рдкрд░ рдпрд╣ рдХрд╛рдо рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ рдерд╛ред рдпрд╣ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдПрдХ рд╕рдорд╕реНрдпрд╛ рдХреЗ рд╕рд╛рде рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЧреНрд░реЗрдбрд▓ рдареАрдХ рд╕реЗ рдирд┐рд░реНрднрд░рддрд╛ рдпрд╛ рдХреБрдЫ рдирд╣реАрдВ рдмрдВрдбрд▓? рдПрдХ рд▓рдВрдмреЗ рд╢реЙрдЯ рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рдЕрдиреБрднрд╡ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдХреБрдЫ рднреА рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд┐рдП рдмрд┐рдирд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ 4 рдШрдВрдЯреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рдХрд╕рд┐рдд рдХрд░ рд░рд╣рд╛ рдерд╛, рд▓реЗрдХрд┐рди рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣ рдирд╣реАрдВ рд╕реЛрдЪ рд╕рдХрддрд╛ рдХрд┐ рдЗрд╕рдХреЗ рдХрд╛рд░рдг рдХреНрдпрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рдореИрдВрдиреЗ рдЖрд░рдПрди 58.0 рдЙрдкрдХрд░рдгреЛрдВ рдкрд░ рдЗрд╕ рддреНрд░реБрдЯрд┐ рдХрд╛ рдЕрдиреБрднрд╡ рдХрд┐рдпрд╛:
рд░реЗрдбрдореА рдиреЛрдЯ 6 рдкреНрд░реЛ - рдПрдВрдбреНрд░реЙрдЗрдб 8.1
Mi A2 рд▓рд╛рдЗрдЯ - рдПрдВрдбреНрд░реЙрдЗрдб 9
WAS-LX1A - рдПрдВрдбреНрд░реЙрдЗрдб 8

рдХрднреА-рдХрднреА рд╕рдВрддрд░реА рдореЗрдВ рджреЗрдЦрдХрд░ рд▓рдЧрддрд╛ рд╣реИ, рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдпрд╣ рдорджрдж рдХрд░рддрд╛ рд╣реИред

рдХреНрдпрд╛ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рдХрд░реЗрдВрдЧреЗ? рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рдирд╣реАрдВ рд╣реИ!

рдореИрдВ рдЙрддреНрдкрд╛рджрди рдкрд░ рдпрд╣ рдПрдХ рд╣реА рд╣реИ

рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╕рдорд╛рди рд╕реНрдЯреИрдХ рдЯреНрд░реЗрд╕ рд╣реИ рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рджрд┐рдП рдЧрдП рджреЛ, рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ 0.59 рдкрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ

(рд╕реНрдЯреИрдХ рдЯреНрд░реЗрд╕ рдХреА рджреВрд╕рд░реА рдкрдВрдХреНрддрд┐ рдкрд░ DrawableContainerState.createAllFutures )

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 рдХреЛ рд╢реВрдиреНрдп рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╕реЗрдЯ рд╣реИ?

@pedrosimao @tamdao
рдЖрдкрдХреЛ рдкреИрдЪ-рдкреИрдХреЗрдЬ рдЬреИрд╕реЗ рдХреБрдЫ рдкреИрдЪ рдЯреВрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдЗрд╕ рд▓рд╛рдЗрди рдХреЛ рдирд┐рдХрд╛рд▓рдирд╛ xml рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рддреЛ рдХреБрдВрдЬреА рдмрд┐рдВрджреБ not set any value to underlineColorAndroid anywhere рдЬрдм рддрдХ рдХрд┐ рдХреБрдЫ рдирд╛рдпрдХ рдХреЛ рдЗрд╕реЗ рдкреИрдЪ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рдирд╣реАрдВ рдорд┐рд▓рд╛ред

рдореБрдЭреЗ рдЖрдЬ рдпрд╣ рддреНрд░реБрдЯрд┐ рдорд┐рд▓реА
рдпрд╣ рдкрд╣рд▓реЗ рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдХреБрдЫ рдмрд┐рд▓реНрдб рдХреЗ рдмрд╛рдж рдореЗрд░реЗ рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рдПрд░рд░ рдЖ рдЧрдпрд╛ рд╣реИ
рдореЗрд░реЗ рд▓рд┐рдП рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рд╕реНрдерд╛рдкрдирд╛ рд░рджреНрдж рдХрд░реЗрдВ рдлрд┐рд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рджреЗрд╢реА рд░рди-рдПрдВрдбреНрд░реЙрдЗрдб рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ
рдЗрд╕рдХреЗ рдмрд╛рдж рдпрд╣ рдореБрджреНрджрд╛ рджреВрд░ рд╣реЛ рдЧрдпрд╛

Btw рдореИрдВ underlineColorAndroid рдкреНрд░реЙрдкреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдЬреЛ рднреА рдореИрдВ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реВрдВ рдпрд╛ рдЙрд╕ рдкреНрд░реЙрдкреНрд╕ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рднреА рдореВрд▓реНрдп рдХреЛ рдкрд░реЗрд╢рд╛рди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реВрдВ

рдпрд╣ рдмреЗрддрд░рддреАрдм рдврдВрдЧ рд╕реЗ рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдЖрдк рдПрдХ scrollview рдХреЗ рдЕрдВрджрд░ рдХреБрдЫ textinputs рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред underlineColorAndroid рд╣рдореЗрд╢рд╛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╕реЗрдЯ рд╣реЛрдиреЗ рдХреЗ рдХрд╛рд░рдг рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдЖрдЬ рдореЗрд░реЗ рд╕рд╛рде рднреА рд╣реБрдЖ, рдПрдХреНрд╕рдкреЛ рдореЗрдВред

рдпрджрд┐ рдЖрдк рдПрдХреНрд╕рдкреЛ рдореЗрдВ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдПрдХреНрд╕рдкреЛ рд╕рд░реНрд╡рд░, рдЕрдкрдиреЗ рдРрдк рдФрд░ рдПрдХреНрд╕рдкреЛ рдРрдк рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдмрдВрдж рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдФрд░ рдЙрдиреНрд╣реЗрдВ рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓рдирд╛ред

рдЕрдиреНрдпрдерд╛, рддреНрд░реБрдЯрд┐ рдЧрд╛рдпрдм рдирд╣реАрдВ рд╣реЛрдЧреАред

рдореЗрд░реЗ рд▓рд┐рдП, рдПрдХреНрд╕рдкреЛ рдореЗрдВ рд╣реБрдЖред

рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ рдкреГрд╖реНрдарднреВрдорд┐ рдореЗрдВ рдореЗрд░реЗ рдРрдк рдХреЗ рджреЛ рдЙрджрд╛рд╣рд░рдг рдереЗред рдЬрдм рдореИрдВрдиреЗ рдПрдВрдбреНрд░реЙрдЗрдб рд╕реНрдХреНрд╡рд╛рдпрд░ рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд┐рдпрд╛, рдЬрд┐рд╕реЗ "рдУрд╡рд░рд╡реНрдпреВ" рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдореЗрдореЛрд░реА рдореЗрдВ рдРрдкреНрд╕ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдРрдк рдХреЗ рдЗрди рджреЛ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ рджреЗрдЦрд╛ .. рдЬрдм рдореИрдВрдиреЗ рдЙрдиреНрд╣реЗрдВ рдмрдВрдж рдХрд┐рдпрд╛ рдФрд░ рдРрдк рдХреЛ рдлрд┐рд░ рд╕реЗ рдЪрд▓рд╛рдпрд╛, рддреЛ рдпрд╣ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рджрд┐рдЦрд╛рдИ рджреАред

рдЗрд╕рд▓рд┐рдП, рдЬреИрд╕рд╛ рдХрд┐ рд▓реЛрдЧреЛрдВ рдиреЗ рдкрд╣рд▓реЗ рдХрд╣рд╛ рдерд╛, рд╕рдм рдХреБрдЫ рдмрдВрдж рдХрд░реЗрдВ рдФрд░ рдлрд┐рд░ рд╕реЗ рдЪрд▓рд╛рдПрдВ рдЗрд╕реЗ рдареАрдХ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП

рдореИрдВрдиреЗ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдкрд░рд┐рдгрд╛рдо рдХреЗ рдЗрд╕ рддреНрд░реБрдЯрд┐ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП 3 рдШрдВрдЯреЗ рдмрд┐рддрд╛рдП, рдлрд┐рд░ рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдПрдВрдбреНрд░реЙрдЗрдб рдПрдореБрд▓реЗрдЯрд░ рдкрд░ рдЕрдкрдиреЗ рдРрдк рдХреЛ рдлрд┐рд░ рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдФрд░ рддреНрд░реБрдЯрд┐ рджреВрд░ рд╣реЛ рдЧрдИред

рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХреНрдпрд╛ рдЖрдк рдЕрднреА рднреА рдЗрд╕ рджреБрд░реНрдШрдЯрдирд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, 0.59.4 рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред

@sunnylqm рдЕрднреА рднреА

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
рдлреЛрди: рд╕реИрдорд╕рдВрдЧ рдЧреИрд▓реЗрдХреНрд╕реА рдиреЛрдЯ 9
рдореЙрдбрд▓: SM-N960F / DS
рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рджреЗрд╢реА рд╕рдВрд╕реНрдХрд░рдг "0.58.5"

рдПрдХ рдЕрд╢рдХреНрдд рд╡рд╕реНрддреБ рд╕рдВрджрд░реНрдн рдкрд░ рдЖрднрд╛рд╕реА рдкрджреНрдзрддрд┐ 'android.graphics.rectable.Drawable android.graphics.drawable.rawable $ ConstantState.newDrawable (android.content.res.Resources)' рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред
createAllFutures
DrawableContainerред рдЬрд╛рд╡рд╛: 875
getOpacity
DrawableContainerред рдЬрд╛рд╡рд╛: 1158
getOpacity
DrawableContainerред рдЬрд╛рд╡рд╛: 433
getOpacity
InsetDrawableред рдЬрд╛рд╡рд╛: 258
computeOpaqueFlags
рд░рд╛рдпред рдЬрд╛рд╡рд╛: 18165
setBackgroundDrawable
рд░рд╛рдпред рдЬрд╛рд╡рд╛: 23,335
рдмреИрдХрдЧреНрд░рд╛рдЙрдВрдб рд╕реЗрдЯ
рд░рд╛рдпред рдЬрд╛рд╡рд╛: 23228

рд░рд╛рдпред рдЬрд╛рд╡рд╛: 5952

рд╡реНрдпрд╛рдЦреНрдпрд╛рди рджрд░реНрд╢рдиред рдЬрд╛рд╡рд╛: 1108

рд▓рд┐рдЦрд╛рдИ рдореЗрдВ рдмрджрд▓рд╛рд╡ред рдЬрд╛рд╡рд╛: 106

рд▓рд┐рдЦрд╛рдИ рдореЗрдВ рдмрджрд▓рд╛рд╡ред рдЬрд╛рд╡рд╛: 102

рд▓рд┐рдЦрд╛рдИ рдореЗрдВ рдмрджрд▓рд╛рд╡ред рдЬрд╛рд╡рд╛: 98

рд▓рд┐рдЦрд╛рдИ рдореЗрдВ рдмрджрд▓рд╛рд╡ред рдЬрд╛рд╡рд╛: 94
setThemedContext
ReactTextInputShadowNodeред рдЬрд╛рд╡рд╛: 73
createView
UIImplementationред рдЬрд╛рд╡рд╛: 288
createView
UIManagerModuleред рдЬрд╛рд╡рд╛: 449
рдЖрд╣реНрд╡рд╛рди
Method.java
рдЖрд╣реНрд╡рд╛рди
JavaMethodWrapperред рдЬрд╛рд╡рд╛: 372
рдЖрд╣реНрд╡рд╛рди
JavaModuleWrapperред рдЬрд╛рд╡рд╛: 158
Daud
NativeRunnable.java
handleCallback
рд╣реИрдВрдбрд▓рд░ред рдЬрд╛рд╡рд╛: 873
dispatchMessage
рд╣реИрдВрдбрд▓рд░ред рдЬрд╛рд╡рд╛: 99
dispatchMessage
MessageQueueThreadHandlerред рдЬрд╛рд╡рд╛: 29
рд▓реВрдк
Looperред рдЬрд╛рд╡рд╛: 214
Daud
MessageQueueThreadImplред рдЬрд╛рд╡рд╛: 192
Daud
рдереНрд░реЗрдбред рдЬрд╛рд╡рд╛: 764

рдореИрдВ рд╕реИрдорд╕рдВрдЧ рдиреЛрдЯ 8, рдПрдВрдбреНрд░реЙрдЗрдб рд╡рд░реНрдЬрди 9, рдФрд░ рд░рд┐рдПрдХреНрдЯ рджреЗрд╢реА 0.57.0 рдкрд░ рднреА рдпрд╣реА рдореБрджреНрджрд╛ рд░рдЦ рд░рд╣рд╛ рд╣реВрдВ

рдПрдХ рд╣реА рдореБрджреНрджрд╛ рдпрд╣рд╛рдБред рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рдореВрд▓ рдирд┐рд╡рд╛рд╕реА 0.59.0ред рд╕рдорд╕реНрдпрд╛ рдмрд╕ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдмреЗрддрд░рддреАрдм рдврдВрдЧ рд╕реЗ рдкреНрд░рдХрдЯ рд╣реЛрддреА рд╣реИред рдЗрд╕реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рднреА рдкреИрдЯрд░реНрди рдирд╣реАрдВ рджреЗрдЦ рд╕рдХрд╛ред рджреЗрд╡ рдореЛрдб рдФрд░ рдЙрддреНрдкрд╛рджрди рджреЛрдиреЛрдВ рдореЗрдВ рд╣реЛрддрд╛ рд╣реИред

рдпрд╣ рд╕рдорд╕реНрдпрд╛ рд╣рдорд╛рд░реЗ рдРрдк рдХреЛ рдЙрддреНрдкрд╛рджрди рдореЗрдВ рднреА рджреБрд░реНрдШрдЯрдирд╛ рдХрд╛ рдХрд╛рд░рдг рдмрдирд╛ рд░рд╣реА рд╣реИред рдпрд╣ рдПрдХ рдмреБрд░рд╛ рдмрдЧ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕реЗ рдкреБрди: рдкреЗрд╢ рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИред рд╣рдореЗрдВ рдЕрдкрдиреЗ рдРрдк рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрд╢рд╛рдЬрдирдХ рдирд┐рд░реНрдзрд╛рд░рдг рдорд┐рд▓рд╛ рд╣реИ, рдФрд░ рдореИрдВ рдХреБрдЫ рд╕рдордп рдФрд░ рдирд┐рд░рд╛рд╢рд╛ рд╕реЗ рджреВрд╕рд░реЛрдВ рдХреЛ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рдирд┐рд╖реНрдХрд░реНрд╖реЛрдВ рдХреЛ рдпрд╣рд╛рдВ рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред

рдЪрд╢реНрдорд╛ рдФрд░ рд╕рдВрд╕реНрдХрд░рдг

рдЗрд╕ рдмрдЧ рдХреЗ рдХрд╛рд░рдг рд╣рдорд╛рд░рд╛ рдРрдк рд╕реИрдорд╕рдВрдЧ, Google рдФрд░ рдПрд▓рдЬреА рдПрдВрдбреНрд░реЙрдЗрдб рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рдХреНрд░реИрд╢ рд╣реЛ рдЧрдпрд╛ рд╣реИред рд╣рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд Android рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рд╕реЗ рдХреНрд░реИрд╢ рд░рд┐рдкреЛрд░реНрдЯ рдорд┐рд▓реА рд╣реИ:

  • 8.0.0
  • 8.1.0
  • 7.1.1

рд╣рдорд╛рд░рд╛ рдРрдк рдЪрд▓ рд░рд╣рд╛ рд╣реИ:

  • react-native : 0.53.0
  • react : 16.2.0

рдХреНрдпрд╛ рджреБрд░реНрдШрдЯрдирд╛ рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИ

рдЬреИрд╕реЗ рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ рдиреЗ рдЗрд╕ рд╕реВрддреНрд░ рдореЗрдВ рдиреЛрдЯ рдХрд┐рдпрд╛ рд╣реИ, TextInput , FlatList , рдФрд░ ScrollView рдШрдЯрдХреЛрдВ рдХреЗ рдХреБрдЫ рд╕рдВрдпреЛрдЬрди рдкреНрд░рджрд╛рди рдХрд░рдХреЗ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рд╕реНрдХреНрд░реАрди рд╣реИ, рдЬрд┐рд╕рдореЗрдВ TextInput FlatList ред рдЬрдм FlatList рдореЗрдВ рдХрд┐рд╕реА рдПрдХ рдЖрдЗрдЯрдо рдХреЛ рдЯреИрдк рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдРрдк рдПрдХ рдирдИ рд╕реНрдХреНрд░реАрди рдкрд░ рдиреЗрд╡рд┐рдЧреЗрдЯ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдПрдХ рдлреЙрд░реНрдо рд╣реЛрддрд╛ рд╣реИред рдЗрд╕ рдлреЙрд░реНрдо рдХрд╛ рдореВрд▓ рдШрдЯрдХ рдПрдХ ScrollView рд╣реИ рдЬрд┐рд╕рдореЗрдВ TextInput рдШрдЯрдХреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╣реЛрддреА рд╣реИ (рдХреБрдЫ рдмрдЯрди рдФрд░ рдЕрдиреНрдп рдХрд╕реНрдЯрдо рдШрдЯрдХреЛрдВ рдХреЗ рд╕рд╛рде)ред рдЬрдм рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрди FlatList рдЖрдЗрдЯрдореЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдкрд░ рдЯреИрдк рдХрд░рддрд╛ рд╣реИ рддреЛ рд╣рдорд╛рд░рд╛ рдРрдк рдХреНрд░реИрд╢ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ (рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдпрд╣ _every_ time рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ)ред

рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╣рдо рдРрд╕рд╛ рдХрд░рдиреЗ рдореЗрдВ рдЕрд╕рдорд░реНрде рд░рд╣реЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рд╣рдо рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рд╣рдорд╛рд░реЗ 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)

рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕реНрд░реЛрдд

рдЗрд╕ рдереНрд░реЗрдб рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрдврд╝рдиреЗ рдФрд░ рдХреБрдЫ рдШрдВрдЯреЗ рдпрд╛ рд╢реЛрдз рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВрдиреЗ ReactTextInputManager.java рдлрд╝рд╛рдЗрд▓ рдореЗрдВ underlineColorAndroid рдкреНрд░реЛрдк рд╣реИрдВрдбрд▓рд░ рдкрд╛рдпрд╛:

@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 рдШрдЯрдХреЛрдВ рд╕реЗ рдЕрдВрдбрд░рд▓рд╛рдЗрди рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдкреНрд░реЛрдк рдХреЛ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереАред рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реЗ рдирд┐рд╖реНрдХрд░реНрд╖реЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдЗрд╕рдХрд╛ рдкреНрд░реЛрдк рд╣реИрдВрдбрд▓рд░ рдПрдХ рдПрдВрдбреНрд░реЙрдЗрдб рдмрдЧ рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд░рддрд╛ рд╣реБрдЖ рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛, рдЬрд┐рд╕рд╕реЗ рдРрдк рдХрднреА-рдХрднреА рдХреНрд░реИрд╢ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред

рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдПрдВрдбреНрд░реЙрдЗрдб рдкрд░ TextInput рдШрдЯрдХреЛрдВ рд╕реЗ рдЕрдВрдбрд░рд▓рд╛рдЗрди рдХреЛ рд╣рдЯрд╛рдиреЗ рдХрд╛ рдПрдХ рдФрд░ рддрд░реАрдХрд╛ рд╣реИред рдЖрдк 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 рдкреНрд░реЛрдк TextInput рдШрдЯрдХреЛрдВ рдХреЗ рдЙрдкрдпреЛрдЧ рд╕реЗ рдмрдЪрдирд╛ рд╢рд╛рдорд┐рд▓ рд╣реИред

рдореИрдВ рдЕрднреА рддрдХ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдпрд╣ рдирд╣реАрдВ рдХрд╣ рд╕рдХрддрд╛ рдХрд┐ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рд╕реНрдерд╛рдиреАрдп рд╕реНрддрд░ рдкрд░ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдкреБрди: рдкреЗрд╢ рдХрд░рдиреЗ рдореЗрдВ рдЕрд╕рдорд░реНрде рд░рд╣рд╛ рд╣реВрдВред рд╣рдо рдЖрдиреЗ рд╡рд╛рд▓реЗ рд╣рдлреНрддреЛрдВ рдореЗрдВ рдЗрд╕ рдмрджрд▓рд╛рд╡ рдХреЛ рдЕрдкрдиреЗ рдРрдк рдореЗрдВ рдЕрдкрдбреЗрдЯ рдХрд░ рджреЗрдВрдЧреЗред рдЙрд╕рдХреЗ рдмрд╛рдж, рд╣рдореЗрдВ рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдереЛрдбрд╝реА рджреЗрд░ рдЗрдВрддрдЬрд╛рд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдЕрдм рд╣реЛрддрд╛ рд╣реИред рдореИрдВ рдЕрдкрдиреЗ рдирд┐рд╖реНрдХрд░реНрд╖реЛрдВ рдХреЗ рд╕рд╛рде рд╡рд╛рдкрд╕ рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ред

рдЗрд╕ рдирд┐рд░рд╛рд╢рд╛рдЬрдирдХ рдореБрджреНрджреЗ рдХреЗ рд╕рд╛рде рдХреБрд╢реНрддреА рдореЗрдВ рд╣рд░ рдХрд┐рд╕реА рдХреЛ рд╢реБрднрдХрд╛рдордирд╛рдПрдБ! рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдпреЗ рдЖрдкрдХреА рдорджрдж рдХрд░реЗрдЧрд╛ред

рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдХреЛ рдХреИрд╕реЗ рдкреБрди: рдкреЗрд╢ рдХрд░рдирд╛ рд╣реИред рдЬреИрд╕рд╛ рдЖрдкрдиреЗ рдХрд╣рд╛ рдерд╛, рдЙрд╕ рдлреЙрд░реНрдо рдореЗрдВ рд╡рд╛рдкрд╕ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ рдФрд░ рдлрд┐рд░ рдлреЙрд░реНрдо рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдлреНрд▓реИрдЯ рд╕реВрдЪреА рдореЗрдВ рдЖрдЗрдЯрдо рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред рд▓рдЧрднрдЧ рджрд╕ рдмрд╛рд░ рджреЛрд╣рд░рд╛рдПрдВ, рдФрд░ рдереЛрдбрд╝реА рддреЗрдЬреА рд╕реЗ, рдпрд╣ рддреНрд░реБрдЯрд┐ рд╣реЛрдЧреАред рдЖрдкрдиреЗ рдореЗрд░реЗ рдХрд╣реЗ рдЕрдиреБрд╕рд╛рд░ рддреНрд░реБрдЯрд┐ рдХреЛ рдкреБрди: рдЙрддреНрдкрдиреНрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

@Hopding
рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдХреЛ рдХреИрд╕реЗ рдкреБрди: рдкреЗрд╢ рдХрд░рдирд╛ рд╣реИред рдЬреИрд╕рд╛ рдЖрдкрдиреЗ рдХрд╣рд╛ рдерд╛, рдЙрд╕ рдлреЙрд░реНрдо рдореЗрдВ рд╡рд╛рдкрд╕ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ рдФрд░ рдлрд┐рд░ рдлреЙрд░реНрдо рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдлреНрд▓реИрдЯ рд╕реВрдЪреА рдореЗрдВ рдЖрдЗрдЯрдо рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред рд▓рдЧрднрдЧ рджрд╕ рдмрд╛рд░ рджреЛрд╣рд░рд╛рдПрдВ, рдФрд░ рдереЛрдбрд╝реА рддреЗрдЬреА рд╕реЗ, рдпрд╣ рддреНрд░реБрдЯрд┐ рд╣реЛрдЧреАред рдЖрдкрдиреЗ рдореЗрд░реЗ рдХрд╣реЗ рдЕрдиреБрд╕рд╛рд░ рддреНрд░реБрдЯрд┐ рдХреЛ рдкреБрди: рдЙрддреНрдкрдиреНрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

@Hopding
рдореИрдВрдиреЗ рдЕрдВрдбрд░рд▓рд╛рдЗрдирд░ рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕реЗ рдкреБрди: рдкреЗрд╢ рдХрд░реВрдВрдЧрд╛ред

@ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рджреЗрд╢реА-рдмреЙрдЯ рдпрд╣ рдореБрджреНрджрд╛ рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ

рдореИрдВ рдЖрд░рдПрди 59.5 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рднреА рд╣реИ ..

рдПрдХ рдЕрд╢рдХреНрдд рд╡рд╕реНрддреБ рд╕рдВрджрд░реНрдн рдкрд░ рдЖрднрд╛рд╕реА рдкрджреНрдзрддрд┐ 'android.graphics.rectable.Drawable android.graphics.drawable.rawable $ ConstantState.newDrawable (android.content.res.Resources)' рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред
createAllFutures
DrawableContainerред рдЬрд╛рд╡рд╛: 875
getOpacity
DrawableContainerред рдЬрд╛рд╡рд╛: 1158
getOpacity
DrawableContainerред рдЬрд╛рд╡рд╛: 433
getOpacity
InsetDrawableред рдЬрд╛рд╡рд╛: 258
computeOpaqueFlags
рд░рд╛рдпред рдЬрд╛рд╡рд╛: 16,594
setBackgroundDrawable
рд░рд╛рдпред рдЬрд╛рд╡рд╛: 21,577
рдмреИрдХрдЧреНрд░рд╛рдЙрдВрдб рд╕реЗрдЯ
рд░рд╛рдпред рдЬрд╛рд╡рд╛: 21,470

рд░рд╛рдпред рдЬрд╛рд╡рд╛: 5498

рд╡реНрдпрд╛рдЦреНрдпрд╛рди рджрд░реНрд╢рдиред рдЬрд╛рд╡рд╛: 875

рд▓рд┐рдЦрд╛рдИ рдореЗрдВ рдмрджрд▓рд╛рд╡ред рдЬрд╛рд╡рд╛: 88

рд▓рд┐рдЦрд╛рдИ рдореЗрдВ рдмрджрд▓рд╛рд╡ред рдЬрд╛рд╡рд╛: 84

рд▓рд┐рдЦрд╛рдИ рдореЗрдВ рдмрджрд▓рд╛рд╡ред рдЬрд╛рд╡рд╛: 80

рд▓рд┐рдЦрд╛рдИ рдореЗрдВ рдмрджрд▓рд╛рд╡ред рдЬрд╛рд╡рд╛: 76
setThemedContext
ReactTextInputShadowNodeред рдЬрд╛рд╡рд╛: 76
createView
UIImplementationред рдЬрд╛рд╡рд╛: 294
createView
UIManagerModuleред рдЬрд╛рд╡рд╛: 462
рдЖрд╣реНрд╡рд╛рди
Method.java
рдЖрд╣реНрд╡рд╛рди
JavaMethodWrapperред рдЬрд╛рд╡рд╛: 372
рдЖрд╣реНрд╡рд╛рди
JavaModuleWrapperред рдЬрд╛рд╡рд╛: 158
Daud
NativeRunnable.java
handleCallback
рд╣реИрдВрдбрд▓рд░ред рдЬрд╛рд╡рд╛: 873
dispatchMessage
рд╣реИрдВрдбрд▓рд░ред рдЬрд╛рд╡рд╛: 99
dispatchMessage
MessageQueueThreadHandlerред рдЬрд╛рд╡рд╛: 29
рд▓реВрдк
Looperред рдЬрд╛рд╡рд╛: 193
Daud
MessageQueueThreadImplред рдЬрд╛рд╡рд╛: 232
Daud
рдереНрд░реЗрдбред рдЬрд╛рд╡рд╛: 764

рдХрд┐рд╕реА рдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдпрд╣ рд╣рд▓? рдореИрдВ рдЖрд░рдПрди 52 рдореЗрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХреЗ рд╕рд╛рде рд╣реВрдВ, рдореИрдВрдиреЗ 56 рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд┐рдпрд╛ рд▓реЗрдХрд┐рди рдЕрднреА рднреА рддреНрд░реБрдЯрд┐ рд╣реИред рдореИрдВрдиреЗ рдЗрд╕реЗ рдкреБрди: рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрджрдо рдЙрдард╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рд▓реЗрдХрд┐рди рдореИрдВ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ред рдХреБрдЫ рдбрд┐рд╡рд╛рдЗрд╕ рдЕрднреА рднреА рдЗрд╕реЗ рдмреЗрддрд░рддреАрдм рдврдВрдЧ рд╕реЗ рдлрд╛рдпрд░ рдХрд░ рд░рд╣реЗ рд╣реИрдВред

рдЗрд╕ рдореБрджреНрджреЗ рдХреЗ рд╕рд╛рде рдХрд┐рд╕реА рднреА рднрд╛рдЧреНрдп?

рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдЖрд░.рдПрди. 0.59.5

рдпрд╣ рд╕рдорд╕реНрдпрд╛ рд╣рдорд╛рд░реЗ рдРрдк рдХреЛ рдЙрддреНрдкрд╛рджрди рдореЗрдВ рднреА рджреБрд░реНрдШрдЯрдирд╛ рдХрд╛ рдХрд╛рд░рдг рдмрдирд╛ рд░рд╣реА рд╣реИред рдпрд╣ рдПрдХ рдмреБрд░рд╛ рдмрдЧ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕реЗ рдкреБрди: рдкреЗрд╢ рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИред рд╣рдореЗрдВ рдЕрдкрдиреЗ рдРрдк рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрд╢рд╛рдЬрдирдХ рдирд┐рд░реНрдзрд╛рд░рдг рдорд┐рд▓рд╛ рд╣реИ, рдФрд░ рдореИрдВ рдХреБрдЫ рд╕рдордп рдФрд░ рдирд┐рд░рд╛рд╢рд╛ рд╕реЗ рджреВрд╕рд░реЛрдВ рдХреЛ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рдирд┐рд╖реНрдХрд░реНрд╖реЛрдВ рдХреЛ рдпрд╣рд╛рдВ рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред

рдЪрд╢реНрдорд╛ рдФрд░ рд╕рдВрд╕реНрдХрд░рдг

рдЗрд╕ рдмрдЧ рдХреЗ рдХрд╛рд░рдг рд╣рдорд╛рд░рд╛ рдРрдк рд╕реИрдорд╕рдВрдЧ, Google рдФрд░ рдПрд▓рдЬреА рдПрдВрдбреНрд░реЙрдЗрдб рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рдХреНрд░реИрд╢ рд╣реЛ рдЧрдпрд╛ рд╣реИред рд╣рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд Android рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рд╕реЗ рдХреНрд░реИрд╢ рд░рд┐рдкреЛрд░реНрдЯ рдорд┐рд▓реА рд╣реИ:

  • 8.0.0
  • 8.1.0
  • 7.1.1

рд╣рдорд╛рд░рд╛ рдРрдк рдЪрд▓ рд░рд╣рд╛ рд╣реИ:

  • react-native : 0.53.0
  • react : 16.2.0

рдХреНрдпрд╛ рджреБрд░реНрдШрдЯрдирд╛ рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИ

рдЬреИрд╕реЗ рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ рдиреЗ рдЗрд╕ рд╕реВрддреНрд░ рдореЗрдВ рдиреЛрдЯ рдХрд┐рдпрд╛ рд╣реИ, TextInput , FlatList , рдФрд░ ScrollView рдШрдЯрдХреЛрдВ рдХреЗ рдХреБрдЫ рд╕рдВрдпреЛрдЬрди рдкреНрд░рджрд╛рди рдХрд░рдХреЗ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рд╕реНрдХреНрд░реАрди рд╣реИ, рдЬрд┐рд╕рдореЗрдВ TextInput FlatList ред рдЬрдм FlatList рдореЗрдВ рдХрд┐рд╕реА рдПрдХ рдЖрдЗрдЯрдо рдХреЛ рдЯреИрдк рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдРрдк рдПрдХ рдирдИ рд╕реНрдХреНрд░реАрди рдкрд░ рдиреЗрд╡рд┐рдЧреЗрдЯ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдПрдХ рдлреЙрд░реНрдо рд╣реЛрддрд╛ рд╣реИред рдЗрд╕ рдлреЙрд░реНрдо рдХрд╛ рдореВрд▓ рдШрдЯрдХ рдПрдХ ScrollView рд╣реИ рдЬрд┐рд╕рдореЗрдВ TextInput рдШрдЯрдХреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╣реЛрддреА рд╣реИ (рдХреБрдЫ рдмрдЯрди рдФрд░ рдЕрдиреНрдп рдХрд╕реНрдЯрдо рдШрдЯрдХреЛрдВ рдХреЗ рд╕рд╛рде)ред рдЬрдм рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрди FlatList рдЖрдЗрдЯрдореЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдкрд░ рдЯреИрдк рдХрд░рддрд╛ рд╣реИ рддреЛ рд╣рдорд╛рд░рд╛ рдРрдк рдХреНрд░реИрд╢ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ (рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдпрд╣ _every_ time рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ)ред
рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╣рдо рдРрд╕рд╛ рдХрд░рдиреЗ рдореЗрдВ рдЕрд╕рдорд░реНрде рд░рд╣реЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рд╣рдо рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рд╣рдорд╛рд░реЗ 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)

рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕реНрд░реЛрдд

рдЗрд╕ рдереНрд░реЗрдб рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрдврд╝рдиреЗ рдФрд░ рдХреБрдЫ рдШрдВрдЯреЗ рдпрд╛ рд╢реЛрдз рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВрдиреЗ ReactTextInputManager.java рдлрд╝рд╛рдЗрд▓ рдореЗрдВ underlineColorAndroid рдкреНрд░реЛрдк рд╣реИрдВрдбрд▓рд░ рдкрд╛рдпрд╛:

@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 рдШрдЯрдХреЛрдВ рд╕реЗ рдЕрдВрдбрд░рд▓рд╛рдЗрди рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдкреНрд░реЛрдк рдХреЛ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереАред рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реЗ рдирд┐рд╖реНрдХрд░реНрд╖реЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдЗрд╕рдХрд╛ рдкреНрд░реЛрдк рд╣реИрдВрдбрд▓рд░ рдПрдХ рдПрдВрдбреНрд░реЙрдЗрдб рдмрдЧ рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд░рддрд╛ рд╣реБрдЖ рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛, рдЬрд┐рд╕рд╕реЗ рдРрдк рдХрднреА-рдХрднреА рдХреНрд░реИрд╢ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред
рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдПрдВрдбреНрд░реЙрдЗрдб рдкрд░ TextInput рдШрдЯрдХреЛрдВ рд╕реЗ рдЕрдВрдбрд░рд▓рд╛рдЗрди рдХреЛ рд╣рдЯрд╛рдиреЗ рдХрд╛ рдПрдХ рдФрд░ рддрд░реАрдХрд╛ рд╣реИред рдЖрдк 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 рдкреНрд░реЛрдк TextInput рдШрдЯрдХреЛрдВ рдХреЗ рдЙрдкрдпреЛрдЧ рд╕реЗ рдмрдЪрдирд╛ рд╢рд╛рдорд┐рд▓ рд╣реИред
рдореИрдВ рдЕрднреА рддрдХ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдпрд╣ рдирд╣реАрдВ рдХрд╣ рд╕рдХрддрд╛ рдХрд┐ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рд╕реНрдерд╛рдиреАрдп рд╕реНрддрд░ рдкрд░ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдкреБрди: рдкреЗрд╢ рдХрд░рдиреЗ рдореЗрдВ рдЕрд╕рдорд░реНрде рд░рд╣рд╛ рд╣реВрдВред рд╣рдо рдЖрдиреЗ рд╡рд╛рд▓реЗ рд╣рдлреНрддреЛрдВ рдореЗрдВ рдЗрд╕ рдмрджрд▓рд╛рд╡ рдХреЛ рдЕрдкрдиреЗ рдРрдк рдореЗрдВ рдЕрдкрдбреЗрдЯ рдХрд░ рджреЗрдВрдЧреЗред рдЙрд╕рдХреЗ рдмрд╛рдж, рд╣рдореЗрдВ рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдереЛрдбрд╝реА рджреЗрд░ рдЗрдВрддрдЬрд╛рд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдЕрдм рд╣реЛрддрд╛ рд╣реИред рдореИрдВ рдЕрдкрдиреЗ рдирд┐рд╖реНрдХрд░реНрд╖реЛрдВ рдХреЗ рд╕рд╛рде рд╡рд╛рдкрд╕ рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ред
рдЗрд╕ рдирд┐рд░рд╛рд╢рд╛рдЬрдирдХ рдореБрджреНрджреЗ рдХреЗ рд╕рд╛рде рдХреБрд╢реНрддреА рдореЗрдВ рд╣рд░ рдХрд┐рд╕реА рдХреЛ рд╢реБрднрдХрд╛рдордирд╛рдПрдБ! рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдпреЗ рдЖрдкрдХреА рдорджрдж рдХрд░реЗрдЧрд╛ред

рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдХреЛ рдХреИрд╕реЗ рдкреБрди: рдкреЗрд╢ рдХрд░рдирд╛ рд╣реИред рдЬреИрд╕рд╛ рдЖрдкрдиреЗ рдХрд╣рд╛ рдерд╛, рдЙрд╕ рдлреЙрд░реНрдо рдореЗрдВ рд╡рд╛рдкрд╕ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ рдФрд░ рдлрд┐рд░ рдлреЙрд░реНрдо рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдлреНрд▓реИрдЯ рд╕реВрдЪреА рдореЗрдВ рдЖрдЗрдЯрдо рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред рд▓рдЧрднрдЧ рджрд╕ рдмрд╛рд░ рджреЛрд╣рд░рд╛рдПрдВ, рдФрд░ рдереЛрдбрд╝реА рддреЗрдЬреА рд╕реЗ, рдпрд╣ рддреНрд░реБрдЯрд┐ рд╣реЛрдЧреАред рдЖрдкрдиреЗ рдореЗрд░реЗ рдХрд╣реЗ рдЕрдиреБрд╕рд╛рд░ рддреНрд░реБрдЯрд┐ рдХреЛ рдкреБрди: рдЙрддреНрдкрдиреНрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдареАрдХ рдХрд░рддрд╛ рд╣реИред

рдкреБрди: рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреА рд╕реЛрдЪ рд░рдЦрдиреЗ рд╡рд╛рд▓реЛрдВ рдХреЗ рд▓рд┐рдП: рд╣рдордиреЗ рдЗрд╕реЗ <TextInput ...> 100 <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.rawableContainer $ DrawableContainerState.createAllFutures (DrawableContainer.java:875) рдкрд░
android.graphics.drawable.rawableContainer $ DrawableContainerState.getOpacity (DrawableContainer.java:1158) рдкрд░
android.graphics.drawable.rawableContainer.getOpacity (DrawableContainer.java:433) рдкрд░
android.graphics.drawable.InsetDrawable.getOpacity (InsetDrawable.java.254)
android.view.View.computeOpaqueFlags рдкрд░ (View.java:18188)
android.view.View.set.ackBackgroundDrawable рдкрд░ (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 рдкрд░
com.facebook.react.uimanager.UIViewOperationQueue $ CreateViewOperation.execute (UIViewOperationQueue.java:200) рдкрд░
comред
comред
com.facebook.react.uimanager.GuardedFrameCallback.doFrame (GuardedFrameCallback.java:29) рдкрд░
com.facebook.react.modules.core.eactChoreographer $ ReactChoreographerDispatcher.doFrame (ReactChoreographer.java:166)
com.facebook.react.modules.core.ChoreographerCompat $ рдлреНрд░реЗрдордХреЙрд▓рдмреИрдХ $ 1.doFrame (рдХреЛрд░рд┐рдпреЛрдЧреНрд░рд╛рдлрд░Compat.java:84) рдкрд░
android.view.Choreographer $ CallbackRecord.run (рдХреЛрд░рд┐рдпреЛрдЧреНрд░рд╛рдлрд░.рдЬрд╛рд╡рд╛:947)
android.view.Choreographer.doCallbacks (рдХреЛрд░рд┐рдпреЛрдЧреНрд░рд╛рдлрд░ред java :761) рдкрд░
android.view.Choreographer.doFrame (рдХреЛрд░рд┐рдпреЛрдЧреНрд░рд╛рдлрд░.рдЬрд╛рд╡рд╛:693) рдкрд░
android.view.Choreographer $ FrameDisplayEventReceiver.run (рдХреЛрд░рд┐рдпреЛрдЧреНрд░рд╛рдлрд░ред java: 935) рдкрд░
android.os.Handler.handleCallback (рд╣реИрдВрдбрд▓рд░.рдЬрд╡рд╛:873) рдкрд░
android.os.Handler.dispatchMessage (Handler.java:99) рдкрд░
android.os.Looper.loop (рд▓реВрдкрд░.рдЬрд╡рд╛:214) рдкрд░
android.app.ActivityThread.main рдкрд░ (ActivThread.java:7045)
java.lang.reflect.Method.invoke (Method.java) рдкрд░
com.android.internal.os.untimeInit рдкрд░ $ MethodAndArgsCaller.run (RuntimeInit.java:493)
com.android.internal.os.ZygoteInit.main (ZygoteInit.java:965) рдкрд░

image

рдХреЛрдИ рдХрд╛рдо?

рдпрд╣рд╛рдВ рдПрдХ рдХреЛрдб рд╣реИ рдЬрд╣рд╛рдВ рддреНрд░реБрдЯрд┐ рдЖрд░рдПрди 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

рд╕рдорд╛рдзрд╛рди plzред

рдпрд╣ рдореБрджреНрджрд╛ резрез рдЬрдирд╡рд░реА реирежрез Jan рдХреЛ рдЦреЛрд▓рд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рдЕрдм рдордИ реирежрез реп рд╣реИ, рдЗрд╕реЗ рд╕рдВрдмреЛрдзрд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реА рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдЯреАрдо рдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рдХреНрдпреЛрдВ рдирд╣реАрдВ рд╣реИ?
FYI рдХрд░реЗрдВ, рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВред

рд╡рд╣реА рдпрд╣рд╛рдБ 0.59.6

рдШрд╛рддрдХ рдЕрдкрд╡рд╛рдж: java.lang.NullPointerException: рдЖрднрд╛рд╕реА рдкрджреНрдзрддрд┐ 'android.graphics.drawable.Drawable android.graphics.drawable.Drawable $ ConstantState .newDrawable (android.content.res.Resources)' рдХреЛ рдПрдХ рдЕрд╢рдХреНрдд рд╡рд╕реНрддреБ рд╕рдВрджрд░реНрдн рдореЗрдВ рд▓рд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред
android.graphics.drawable.rawableContainer $ DrawableContainerState.createAllFutures (DrawableContainer.java:875) рдкрд░
android.graphics.drawable.rawableContainer $ DrawableContainerState.getOpacity (DrawableContainer.java:1158) рдкрд░
android.graphics.drawable.rawableContainer.getOpacity (DrawableContainer.java:433) рдкрд░
android.graphics.drawable.InsetDrawable.getOpacity (InsetDrawable.java.254)
android.view.View.computeOpaqueFlags рдкрд░ (View.java:18188)
android.view.View.set.ackBackgroundDrawable рдкрд░ (View.java:23358)
android.view.View.setBackground рдкрд░ (View.java:23251)
android.view.View рдкрд░
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 рдкрд░
com.facebook.react.uimanager.UIViewOperationQueue $ CreateViewOperation.execute (UIViewOperationQueue.java:200) рдкрд░
comред
comред
com.facebook.react.uimanager.GuardedFrameCallback.doFrame (GuardedFrameCallback.java:29) рдкрд░
com.facebook.react.modules.core.eactChoreographer $ ReactChoreographerDispatcher.doFrame (ReactChoreographer.java:166)
com.facebook.react.modules.core.ChoreographerCompat $ рдлреНрд░реЗрдордХреЙрд▓рдмреИрдХ $ 1.doFrame (рдХреЛрд░рд┐рдпреЛрдЧреНрд░рд╛рдлрд░Compat.java:84) рдкрд░
android.view.Choreographer $ CallbackRecord.run (рдХреЛрд░рд┐рдпреЛрдЧреНрд░рд╛рдлрд░.рдЬрд╛рд╡рд╛:947)
android.view.Choreographer.doCallbacks (рдХреЛрд░рд┐рдпреЛрдЧреНрд░рд╛рдлрд░ред java :761) рдкрд░
android.view.Choreographer.doFrame (рдХреЛрд░рд┐рдпреЛрдЧреНрд░рд╛рдлрд░.рдЬрд╛рд╡рд╛:693) рдкрд░
android.view.Choreographer $ FrameDisplayEventReceiver.run (рдХреЛрд░рд┐рдпреЛрдЧреНрд░рд╛рдлрд░ред java: 935) рдкрд░
android.os.Handler.handleCallback (рд╣реИрдВрдбрд▓рд░.рдЬрд╡рд╛:873) рдкрд░
android.os.Handler.dispatchMessage (Handler.java:99) рдкрд░
android.os.Looper.loop (рд▓реВрдкрд░.рдЬрд╡рд╛:214) рдкрд░
android.app.ActivityThread.main рдкрд░ (ActivThread.java:7045)
java.lang.reflect.Method.invoke (Method.java) рдкрд░
com.android.internal.os.untimeInit рдкрд░ $ MethodAndArgsCaller.run (RuntimeInit.java:493)
com.android.internal.os.ZygoteInit.main (ZygoteInit.java:965) рдкрд░

bug_react

@knspatel рд╣рдорд╛рд░рд╛ рдХрд╛рдо рдПрдХ рдореЛрдбрд▓ рдХреЗ рд╕рд╛рде рд╕реНрдХреНрд░реАрди рдХреЛ рдУрд╡рд░рд▓реЗ рдХрд░рдирд╛ рдерд╛, рдЬреЛ рд╕рдВрдХреНрд░рдордг рдкреНрд░рднрд╛рд╡ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдорд╛рдореВрд▓реА рдкреГрд╖реНрдарднреВрдорд┐ рдЕрд╕реНрдкрд╖реНрдЯрддрд╛ рдХреЗ рд╕рд╛рде рдореВрд▓ рдкрд░ рдПрдХ рдкрд╛рда рдЗрдирдкреБрдЯ рдмреЙрдХреНрд╕ рдХреЛ рддреИрдирд╛рдд рдХрд░рддрд╛ рдерд╛ред рдпрджрд┐ y- рд╕рдордиреНрд╡рдпрди рджреГрд╢реНрдп рд╕реЗ рдмрд╛рд╣рд░ рдпрд╛ рджреБрд░реНрдЧрдо рд╣реИ, рддреЛ рдЯреЗрдХреНрд╕реНрдЯ рдЗрдирдкреБрдЯ рдмреЙрдХреНрд╕ рдХреАрдмреЛрд░реНрдб рдХреЗ рдареАрдХ рдКрдкрд░ рдмреИрдарддрд╛ рд╣реИред

рдореБрдЭреЗ рдкреБрдирд░реНрдХрдерди рджреЗрдВ:
рдореБрдЦреНрдп рдмрд┐рдВрджреБ рдХрд╣реАрдВ рднреА рдХрд┐рд╕реА рднреА рдореВрд▓реНрдп рдХреЛ рд░реЗрдЦрд╛рдВрдХрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реЗрдЯ рдирд╣реАрдВ рд╣реИ ред рд▓реЗрдХрд┐рди рдЪреВрдБрдХрд┐ 0.57 underlineColorAndroid рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╕реЗрдЯ рд╣реЛрддрд╛ рд╣реИ , рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдкреИрдЪ-рдкреИрдХреЗрдЬ рдЬреИрд╕реЗ рдХреБрдЫ рдкреИрдЪ рдЯреВрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдЗрд╕ рд▓рд╛рдЗрди рдХреЛ рд╣рдЯрд╛рдирд╛
рдФрд░ рдЕрдЧрд░ рдЖрдк рдЕрднреА рднреА рдЕрдВрдбрд░рд▓рд╛рдЗрди рдХреЛ рдЕрджреГрд╢реНрдп рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдЗрд╕реЗ рдХреБрдЫ xml рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред


рдФрд░ рдпрд╣рд╛рдБ рдХреБрдЫ рдЬрд╛рдирдХрд╛рд░реА рдореБрдЭреЗ рдЕрдм рддрдХ рдорд┐рд▓реА рд╣реИ:
рдПрдХ рдЪреАрдиреА рдмреНрд▓реЙрдЧ (рдпрджрд┐ рдЖрдк рдкрдврд╝ рдирд╣реАрдВ рд╕рдХрддреЗ рд╣реИрдВ рддреЛ Google рдЕрдиреБрд╡рд╛рдж рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ) рдиреЗ рдЗрд╕ рдПрдХ рдмрд╣реБрдд рд╣реА рд╕рдорд╛рди рдореБрджреНрджреЗ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ред рдЗрд╕рдиреЗ рдХрд╣рд╛ рдХрд┐ getConstantState рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдмрд┐рдирд╛ рдХреБрдЫ рдХрд╕реНрдЯрдо рдбреНрд░реЙрдмрд▓ рдХреНрд▓рд╛рд╕ рдХреБрдЫ рдкрд░рд┐рджреГрд╢реНрдп рдореЗрдВ рджреБрд░реНрдШрдЯрдирд╛ рдХрд╛ рдХрд╛рд░рдг рдмрди рд╕рдХрддреЗ рд╣реИрдВред

рдореИрдВрдиреЗ рдкрд╛рдпрд╛ рдХрд┐ рдХрднреА-рдХрднреА textinput (ReactEditText) рдХреЛ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ (рдЕрдзрд┐рдХ textinputs рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛рдПрдВ, рдкреБрдирд░реНрдирд╡реАрдиреАрдХрд░рдг рдХреА рддрд░рд╣?), рдФрд░ рдпрд╣ setBackground рдлрд┐рд░ рд╕реЗ рд╣реЛрдЧрд╛, рдЬреЛ рддрдм рдорд┐рд▓рд╛ https:// oithubub-aosp-mirror ConstantState рд╢реВрдиреНрдп рд╣реИред

рдПрдХрдорд╛рддреНрд░ рдХрд╕реНрдЯрдо рдбреНрд░рд╛ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╡рд░реНрдЧ рдЬреЛ рдореИрдВрдиреЗ рдкрд╛рдпрд╛, ReactViewBackgroundDrawable рдФрд░ рдЗрд╕рдиреЗ getConstantState рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬреЛ рдХрд┐ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЕрд╢рдХреНрдд рд╣реЛ рдЬрд╛рдПрдЧрд╛ред
рдореИрдВрдиреЗ рдХреБрдЫ рдЦрд╛рд▓реА рд╡рд░реНрдЧ рдХреЗ рд╕рд╛рде рдЗрд╕реЗ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдФрд░ рдЗрд╕рд╕реЗ рдХреБрдЫ рдлрд░реНрдХ рдкрдбрд╝ рд╕рдХрддрд╛ рд╣реИ (рджреВрд╕рд░реЛрдВ рдХреЗ рдЙрднрд░рдиреЗ рдХреЗ рджреМрд░рд╛рди рдпрд╣ рджреБрд░реНрдШрдЯрдирд╛ рджреВрд░ рд╣реЛ рдЬрд╛рддреА рд╣реИ)ред

рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХрд┐рд╕реА рдХреЛ рдЕрдзрд┐рдХ рдЦреБрджрд╛рдИ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рдореИрдВрдиреЗ рдкрд╛рдпрд╛ рдХрд┐ рдореИрдиреНрдпреБрдЕрд▓ рдкрд░реАрдХреНрд╖рдг рдмрд╣реБрдд рд╣рд┐рдЯ рдФрд░ рдорд┐рд╕ рд╣реЛрдиреЗ рд╡рд╛рд▓рд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдХреБрдЫ рдРрд╕реЗ рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдХрд╛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдШрдЯрдХ рд▓рд┐рдЦрд╛, рдЬрд┐рдиреНрд╣реЗрдВ рд▓реЛрдЧ рдКрдкрд░ рдмрддрд╛ рд░рд╣реЗ рд╣реИрдВред рдЖрдкрдХреЛ рдиреАрдЪреЗ рдШрдЯрдХ рдорд┐рд▓реЗрдЧрд╛ред рдЖрдкрдХреЛ рдмрд╕ рдЕрдкрдирд╛ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдХрд╣реАрдВ рди рдХрд╣реАрдВ рд░реЗрдВрдбрд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

рдРрд╕рд╛ рдХрд░рддреЗ рд╣реБрдП рдореИрдВрдиреЗ рдкрд╛рдпрд╛ рдХрд┐ рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рд╕реНрдЯрд╛рдЗрд▓ рдореЗрдВ AppTheme рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
<item name="android:editTextBackground"><strong i="7">@android</strong>:color/transparent</item>

рдХреБрдЫ рдФрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рдереА, рдФрд░ underlineColorAndroid рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП _no need_ рдерд╛, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рдерд╛ рдХрд┐ React Native рдЕрдм рдЗрд╕реЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИред

рдЗрд╕ рдлрд┐рдХреНрд╕ рдХрд╛ рдореБрдЦреНрдп рдирдХрд╛рд░рд╛рддреНрдордХ рдкрд╣рд▓реВ рдпрд╣ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдкреИрдбрд┐рдВрдЧ рдХреЗ рдкрд░рд┐рдгрд╛рдореА рдиреБрдХрд╕рд╛рди рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ TextInputs рдХреЛ рдлрд┐рд░ рд╕реЗ рд╕реНрдЯрд╛рдЗрд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдФрд░ рдЖрдк рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЕрдВрдбрд░рд▓рд╛рдЗрдирд┐рдВрдЧ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рднреА рдЦреЛ рджреЗрддреЗ рд╣реИрдВ, рдЬреЛ рдХрд┐ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдПрдХ рд▓рд╛рдн рдерд╛ рдХреНрдпреЛрдВрдХрд┐ рд╣рдордиреЗ рдЗрд╕реЗ рд╣рдореЗрд╢рд╛ "рдкрд╛рд░рджрд░реНрд╢реА" рд╕реЗрдЯ рдХрд┐рдпрд╛ рдерд╛ IOS рдХреЗ рдЕрдиреБрд░реВрдк рд╣реЛрдирд╛ред рдпрджрд┐ рдЖрдкрдХреЛ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рддреЛ рдЖрдк рдПрдХ рд░реИрдкрд░ рдШрдЯрдХ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ onFocus рдФрд░ onBlur рджреЗрдЦрддрд╛ рд╣реИ рдФрд░ рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛ рд░реЗрдЦрд╛рдВрдХрди рдмрдирд╛рддрд╛ рд╣реИред

рд░рд┐рдПрдХреНрдЯ рдиреЗрдЯрд┐рд╡ рдХрд╛ рдореЗрд░рд╛ рд╕рдВрд╕реНрдХрд░рдг 0.57.3 рд╣реИ

рдпрд╣рд╛рдБ рдХреБрдЫ рдЕрдиреНрдп рдЪреАрдЬреЗрдВ рд╣реИрдВ рдЬреЛ рдореБрдЭреЗ рдЕрдкрдиреЗ рдкрд░реАрдХреНрд╖рдг рдШрдЯрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдорд┐рд▓реАрдВ:

  1. рдореИрдВ рдЕрдкрдиреЗ рдХрдо-рдХрд▓реНрдкрдирд╛ Android рдЯреИрдмрд▓реЗрдЯ рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рджреБрд░реНрдШрдЯрдирд╛ рдХрд╛ рдХрд╛рд░рдг рдирд╣реАрдВ рдмрди рд╕рдХрддрд╛ред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдПрдВрдбреНрд░реЙрдЗрдб 7. рдкрд░ рдЪрд▓рдиреЗ рд╡рд╛рд▓реЗ рдореЗрд░реЗ рд╕реИрдорд╕рдВрдЧ рдПрд╕ 6 рдПрдЬ рдлреЛрди рдкрд░ рдкреБрди: рдкреЗрд╢ рдХрд░рдирд╛ рдХрд╛рдлреА рдЖрд╕рд╛рди рдерд╛ред рдореЗрд░рд╛ рдЕрдиреБрдорд╛рди рд╣реИ рдХрд┐ рдПрдХ рджреМрдбрд╝ рдХреА рд╕реНрдерд┐рддрд┐ рд╣реИ рдЬреЛ рдЗрд╕реЗ рднрдбрд╝рдХрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рддреЗрдЬрд╝ рдбрд┐рд╡рд╛рдЗрд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
  2. рдкрд╛рда рдЗрдирдкреБрдЯ рд╕реНрдХреНрд░реЙрд▓ рдХрд░рдиреЗ рд╕реЗ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рд╛, рдФрд░ рдореИрдВ рдмрд┐рдирд╛ рд╕реНрдХреНрд░реЙрд▓ рдХрд┐рдП рд╣реБрдП рднреА рдЖрд╕рд╛рдиреА рд╕реЗ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдкреБрди: рдЙрддреНрдкрдиреНрди рдХрд░ рд╕рдХрддрд╛ рдерд╛ред
  3. рдкрд╛рда рджрд░реНрдЬ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рдерд╛ред рдмрд╕ рдзреНрдпрд╛рди рдмрджрд▓рдиреЗ рд╕реЗ рджреБрд░реНрдШрдЯрдирд╛ рдХрд╛ рдХрд╛рд░рдг рдмрдирдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдерд╛ред
  4. рдЗрд╕рд╕реЗ рдХреЛрдИ рдлрд╝рд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рд╛ рдХрд┐ рдЖрдкрдиреЗ рдХрд┐рд╕ рд░рдВрдЧ рдХреЛ рдЕрдВрдбрд░рд▓рд╛рдЗрди рд╕реЗрдЯ рдХрд┐рдпрд╛, рдпрд╣рд╛рдБ рддрдХ рдХрд┐ undefined рдиреЗ рднреА рджреБрд░реНрдШрдЯрдирд╛ рдХрд╛ рдХрд╛рд░рдг рдмрдирд╛рдпрд╛, рд▓реЗрдХрд┐рди рдЖрдк рд╢рд╛рдпрдж рдпрд╣ рдЙрдореНрдореАрдж рдХрд░реЗрдВрдЧреЗ рдХрд┐ рдЪреВрдВрдХрд┐ рдЕрдм RN рдЗрд╕реЗ "рдкрд╛рд░рджрд░реНрд╢реА" рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЪреВрдХрддрд╛ рд╣реИ
  5. рд╕реНрдХреНрд░реАрди рдкрд░ рдХреЗрд╡рд▓ 10 рдХреА рддреБрд▓рдирд╛ рдореЗрдВ 100 рдХреЗ рд╕рд╛рде рддреЗрдЬ рджреБрд░реНрдШрдЯрдирд╛ рд╣реЛрдиреЗ рдХреЗ рд╕рд╛рде рдПрдХ рдмрд╛рд░ рдореЗрдВ рджрд┐рдЦрдиреЗ рд╡рд╛рд▓реЗ TextInputs рдХреА рдЙрдЪрд┐рдд рд╕рдВрдЦреНрдпрд╛ рд╣реЛрдиреЗ рд╕реЗ рдлрд░реНрдХ рдкрдбрд╝рд╛ред
  6. рдореИрдВ 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;

рдЙрди рд╕рднреА рдХреЗ рд▓рд┐рдП рдЬреЛ рдХрд┐рд╕реА рд╕рдорд╛рдзрд╛рди рдХреА рддрд▓рд╛рд╢ рдореЗрдВ рд╣реИрдВ, рдореИрдВ рдЙрд╕ рд╕реЗрдЯрд┐рдВрдЧ рдХреА рдкреБрд╖реНрдЯрд┐ рднреА рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ@android : рд░рдВрдЧ / рдкрд╛рд░рджрд░реНрд╢реА рд╢реИрд▓рд┐рдпреЛрдВ рдореЗрдВред xml рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рдХрд┐рдпрд╛ред

FYI рдХрд░реЗрдВ: рд╣рдо React-Native Paper рдФрд░ рдЙрдирдХреЗ TextInput рдШрдЯрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рд╣рдо RN-Paper TextInput рдкрд░ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдкреНрд░рднрд╛рд╡ рдХреЗ рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ <item name="android:editTextBackground"><strong i="5">@android</strong>:color/transparent</item> рд╕реЗрдЯ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдереЗ рдФрд░ рддрдм рд╕реЗ рдЕрдм рддрдХ рджреБрд░реНрдШрдЯрдирд╛ рдХрд╛ рдЕрдиреБрднрд╡ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИред

0.59.9 рдЙрддреНрдкрд╛рджрди рдореЗрдВ рджреЗрдЦрдирд╛ред

Crashlytics:

рд╕реИрдорд╕рдВрдЧ рдЧреИрд▓реЗрдХреНрд╕реА S7 рдПрдЬ
рдПрдВрдбреНрд░реЙрдЗрдб 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 рд╕реЗ рдмрд┐рд▓реНрдб рдлрд╝реЛрд▓реНрдбрд░ рд╣рдЯрд╛рдПрдВред
Your_Project> android> app> build

рдЗрд╕реЗ рд╣рдЯрд╛рдиреЗ рдХреЗ рдмрд╛рдж, react-native run-android рдЪрд▓рд╛рдПрдВ

рдареАрдХ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд┐рдпрд╛: рдбреА

рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╣реА рдпрд╣ рдХреЛрд╢рд┐рд╢ рдХреА рдФрд░ рдЕрдВрдбрд░рд▓рд╛рдЗрдирд░ рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛ред рдХрд┐рд╕реА рдФрд░ рдХреЗ рд╕рд╛рде рдПрдХ рдФрд░ рд╕рдорд╛рдзрд╛рди?

рдпрд╣ рд╕рдорд╕реНрдпрд╛ рд╣рдорд╛рд░реЗ рдРрдк рдХреЛ рдЙрддреНрдкрд╛рджрди рдореЗрдВ рднреА рджреБрд░реНрдШрдЯрдирд╛ рдХрд╛ рдХрд╛рд░рдг рдмрдирд╛ рд░рд╣реА рд╣реИред рдпрд╣ рдПрдХ рдмреБрд░рд╛ рдмрдЧ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕реЗ рдкреБрди: рдкреЗрд╢ рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИред рд╣рдореЗрдВ рдЕрдкрдиреЗ рдРрдк рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрд╢рд╛рдЬрдирдХ рдирд┐рд░реНрдзрд╛рд░рдг рдорд┐рд▓рд╛ рд╣реИ, рдФрд░ рдореИрдВ рдХреБрдЫ рд╕рдордп рдФрд░ рдирд┐рд░рд╛рд╢рд╛ рд╕реЗ рджреВрд╕рд░реЛрдВ рдХреЛ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рдирд┐рд╖реНрдХрд░реНрд╖реЛрдВ рдХреЛ рдпрд╣рд╛рдВ рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред

рдЪрд╢реНрдорд╛ рдФрд░ рд╕рдВрд╕реНрдХрд░рдг

рдЗрд╕ рдмрдЧ рдХреЗ рдХрд╛рд░рдг рд╣рдорд╛рд░рд╛ рдРрдк рд╕реИрдорд╕рдВрдЧ, Google рдФрд░ рдПрд▓рдЬреА рдПрдВрдбреНрд░реЙрдЗрдб рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рдХреНрд░реИрд╢ рд╣реЛ рдЧрдпрд╛ рд╣реИред рд╣рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд Android рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рд╕реЗ рдХреНрд░реИрд╢ рд░рд┐рдкреЛрд░реНрдЯ рдорд┐рд▓реА рд╣реИ:

  • 8.0.0
  • 8.1.0
  • 7.1.1

рд╣рдорд╛рд░рд╛ рдРрдк рдЪрд▓ рд░рд╣рд╛ рд╣реИ:

  • react-native : 0.53.0
  • react : 16.2.0

рдХреНрдпрд╛ рджреБрд░реНрдШрдЯрдирд╛ рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИ

рдЬреИрд╕реЗ рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ рдиреЗ рдЗрд╕ рд╕реВрддреНрд░ рдореЗрдВ рдиреЛрдЯ рдХрд┐рдпрд╛ рд╣реИ, TextInput , FlatList , рдФрд░ ScrollView рдШрдЯрдХреЛрдВ рдХреЗ рдХреБрдЫ рд╕рдВрдпреЛрдЬрди рдкреНрд░рджрд╛рди рдХрд░рдХреЗ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рд╕реНрдХреНрд░реАрди рд╣реИ, рдЬрд┐рд╕рдореЗрдВ TextInput FlatList ред рдЬрдм FlatList рдореЗрдВ рдХрд┐рд╕реА рдПрдХ рдЖрдЗрдЯрдо рдХреЛ рдЯреИрдк рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдРрдк рдПрдХ рдирдИ рд╕реНрдХреНрд░реАрди рдкрд░ рдиреЗрд╡рд┐рдЧреЗрдЯ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдПрдХ рдлреЙрд░реНрдо рд╣реЛрддрд╛ рд╣реИред рдЗрд╕ рдлреЙрд░реНрдо рдХрд╛ рдореВрд▓ рдШрдЯрдХ рдПрдХ ScrollView рд╣реИ рдЬрд┐рд╕рдореЗрдВ TextInput рдШрдЯрдХреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╣реЛрддреА рд╣реИ (рдХреБрдЫ рдмрдЯрди рдФрд░ рдЕрдиреНрдп рдХрд╕реНрдЯрдо рдШрдЯрдХреЛрдВ рдХреЗ рд╕рд╛рде)ред рдЬрдм рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрди FlatList рдЖрдЗрдЯрдореЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдкрд░ рдЯреИрдк рдХрд░рддрд╛ рд╣реИ рддреЛ рд╣рдорд╛рд░рд╛ рдРрдк рдХреНрд░реИрд╢ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ (рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдпрд╣ _every_ time рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ)ред
рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╣рдо рдРрд╕рд╛ рдХрд░рдиреЗ рдореЗрдВ рдЕрд╕рдорд░реНрде рд░рд╣реЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рд╣рдо рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рд╣рдорд╛рд░реЗ 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)

рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕реНрд░реЛрдд

рдЗрд╕ рдереНрд░реЗрдб рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрдврд╝рдиреЗ рдФрд░ рдХреБрдЫ рдШрдВрдЯреЗ рдпрд╛ рд╢реЛрдз рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВрдиреЗ ReactTextInputManager.java рдлрд╝рд╛рдЗрд▓ рдореЗрдВ underlineColorAndroid рдкреНрд░реЛрдк рд╣реИрдВрдбрд▓рд░ рдкрд╛рдпрд╛:

@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 рдШрдЯрдХреЛрдВ рд╕реЗ рдЕрдВрдбрд░рд▓рд╛рдЗрди рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдкреНрд░реЛрдк рдХреЛ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереАред рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реЗ рдирд┐рд╖реНрдХрд░реНрд╖реЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдЗрд╕рдХрд╛ рдкреНрд░реЛрдк рд╣реИрдВрдбрд▓рд░ рдПрдХ рдПрдВрдбреНрд░реЙрдЗрдб рдмрдЧ рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд░рддрд╛ рд╣реБрдЖ рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛, рдЬрд┐рд╕рд╕реЗ рдРрдк рдХрднреА-рдХрднреА рдХреНрд░реИрд╢ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред
рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдПрдВрдбреНрд░реЙрдЗрдб рдкрд░ TextInput рдШрдЯрдХреЛрдВ рд╕реЗ рдЕрдВрдбрд░рд▓рд╛рдЗрди рдХреЛ рд╣рдЯрд╛рдиреЗ рдХрд╛ рдПрдХ рдФрд░ рддрд░реАрдХрд╛ рд╣реИред рдЖрдк 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 рдкреНрд░реЛрдк TextInput рдШрдЯрдХреЛрдВ рдХреЗ рдЙрдкрдпреЛрдЧ рд╕реЗ рдмрдЪрдирд╛ рд╢рд╛рдорд┐рд▓ рд╣реИред
рдореИрдВ рдЕрднреА рддрдХ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдпрд╣ рдирд╣реАрдВ рдХрд╣ рд╕рдХрддрд╛ рдХрд┐ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рд╕реНрдерд╛рдиреАрдп рд╕реНрддрд░ рдкрд░ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдкреБрди: рдкреЗрд╢ рдХрд░рдиреЗ рдореЗрдВ рдЕрд╕рдорд░реНрде рд░рд╣рд╛ рд╣реВрдВред рд╣рдо рдЖрдиреЗ рд╡рд╛рд▓реЗ рд╣рдлреНрддреЛрдВ рдореЗрдВ рдЗрд╕ рдмрджрд▓рд╛рд╡ рдХреЛ рдЕрдкрдиреЗ рдРрдк рдореЗрдВ рдЕрдкрдбреЗрдЯ рдХрд░ рджреЗрдВрдЧреЗред рдЙрд╕рдХреЗ рдмрд╛рдж, рд╣рдореЗрдВ рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдереЛрдбрд╝реА рджреЗрд░ рдЗрдВрддрдЬрд╛рд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдЕрдм рд╣реЛрддрд╛ рд╣реИред рдореИрдВ рдЕрдкрдиреЗ рдирд┐рд╖реНрдХрд░реНрд╖реЛрдВ рдХреЗ рд╕рд╛рде рд╡рд╛рдкрд╕ рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ред
рдЗрд╕ рдирд┐рд░рд╛рд╢рд╛рдЬрдирдХ рдореБрджреНрджреЗ рдХреЗ рд╕рд╛рде рдХреБрд╢реНрддреА рдореЗрдВ рд╣рд░ рдХрд┐рд╕реА рдХреЛ рд╢реБрднрдХрд╛рдордирд╛рдПрдБ! рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдпреЗ рдЖрдкрдХреА рдорджрдж рдХрд░реЗрдЧрд╛ред

рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдХреЛ рдХреИрд╕реЗ рдкреБрди: рдкреЗрд╢ рдХрд░рдирд╛ рд╣реИред рдЬреИрд╕рд╛ рдЖрдкрдиреЗ рдХрд╣рд╛ рдерд╛, рдЙрд╕ рдлреЙрд░реНрдо рдореЗрдВ рд╡рд╛рдкрд╕ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ рдФрд░ рдлрд┐рд░ рдлреЙрд░реНрдо рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдлреНрд▓реИрдЯ рд╕реВрдЪреА рдореЗрдВ рдЖрдЗрдЯрдо рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред рд▓рдЧрднрдЧ рджрд╕ рдмрд╛рд░ рджреЛрд╣рд░рд╛рдПрдВ, рдФрд░ рдереЛрдбрд╝реА рддреЗрдЬреА рд╕реЗ, рдпрд╣ рддреНрд░реБрдЯрд┐ рд╣реЛрдЧреАред рдЖрдкрдиреЗ рдореЗрд░реЗ рдХрд╣реЗ рдЕрдиреБрд╕рд╛рд░ рддреНрд░реБрдЯрд┐ рдХреЛ рдкреБрди: рдЙрддреНрдкрдиреНрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдореИрдВ рдХреНрдпрд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдБ? im рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рднреА рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣рд╛ рд╣реВрдБ!

рдореБрдЭреЗ рднреАред рдЙрддреНрдкрд╛рджрди рдореЗрдВ рдЗрд╕рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛

@ jake41 рдореИрдВрдиреЗ рдЗрд╕реЗ рдкреБрдирдГ рдЖрд░рдВрдн рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рдФрд░ рдЗрд╕рдиреЗ рдХрд╛рдо рдХрд┐рдпрд╛, рдХреНрдпрд╛

@agrass рдореИрдВ рдЖрдкрдХреЗ рддрд░реАрдХреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ред рдЙрдореНрдореАрдж рддреЛ рджрд┐рдЦрддреА рд╣реИред
рд▓реЗрдХрд┐рди, рдореЗрд░рд╛ рдРрдк рдЗрд╕ рдХрд╛рд░рдг рд╕реЗ рдмрд╣реБрдд рдХрдо рджреБрд░реНрдШрдЯрдирд╛рдЧреНрд░рд╕реНрдд рд╣реЛрддрд╛ рд╣реИред рдХреНрдпрд╛ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рд╣рд░ рдмрд╛рд░ рдРрдк рдХреЛ рдХреНрд░реИрд╢ рдмрдирд╛рддреА рд╣реИ? рдпрд╛ рдХрднреА-рдХрднреА?
рд╣рдорд╛рд░реЗ рдРрдк рдХрд╛ DAU рд▓рдЧрднрдЧ 8k рд╣реИ, рдФрд░ рдпрд╣ рджрд┐рди рдореЗрдВ рдПрдХ рдмрд╛рд░ рд╣реЛрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдпрд╣ рдирдЧрдгреНрдп рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рджреБрд░реНрдШрдЯрдирд╛ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреА рдЙрдореНрдореАрдж рдХрд░рддрд╛ рд╣реВрдВред

рдХрд┐рд╕реА рдХреЛ рднреА рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдЪрд┐рдд рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдзрд╛рд░рдг рдорд┐рд▓рд╛? рдпрд╣ рдмрд╣реБрдд рдХрдо рд╣реА рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдХреЗрд╡рд▓ рдЙрд╕ рдШрдЯрдХ рдореЗрдВ рд╣реЛрддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдПрдХ рдкрд╛рда рдХреНрд╖реЗрддреНрд░ рд╣реЛрддрд╛ рд╣реИред

рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдЕрднреА рднреА рд░рд┐рдПрдХреНрдЯ рдиреЗрдЯрд┐рд╡ 0.60 рдХреЗ рд╕рд╛рде рдмрдиреА рд╣реБрдИ рд╣реИ

рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдореВрд▓: 0.59.8
Android: 8.1.0
рдбрд┐рд╡рд╛рдЗрд╕: рд░реЗрдбрдореА 5 рдкреНрд▓рд╕

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
рдбрд┐рд╡рд╛рдЗрд╕: рдкрд┐рдХреНрд╕реЗрд▓ 2
Android: 9.0

рдпрджрд┐ рдпрд╣ рдПрдХ рдлреЙрд░реНрдо рд╕реНрдХреНрд░реАрди рд╣реИ, рддреЛ рдЖрдк рдЗрдирдкреБрдЯ рдореЗрдВ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдореБрдЭреЗ рдПрдХ рдЙрдкрд╛рдп рдорд┐рд▓рд╛ред рдпрдХреАрди рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рджреАрд░реНрдШрдХрд╛рд▓рд┐рдХ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЖрдк рд▓реЛрдЧреЛрдВ рдХреЛ рддрдм рддрдХ рдХрд╛рдо рдХрд░рдиреЗ рджреЗрдЧрд╛ рдЬрдм рддрдХ рдХрд┐ рдХреЛрдИ рд╕реНрдерд╛рдпреА рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рдорд┐рд▓ рдЬрд╛рддрд╛ред
рдмрд╕ рдЕрдкрдирд╛ рдХреИрд╢ рд╕рд╛рдлрд╝ рдХрд░реЗрдВ: npm start - --reset-cache
рдФрд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░реЗрдВред
рдЗрд╕рдиреЗ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд┐рдпрд╛ред
FYI рдХрд░реЗрдВ, Ididn't рдореЗрд░реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рдЕрднреА рддрдХ рдЦрд╛рд░рд┐рдЬ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИред
рдореЗрд░реА рдирд┐рд░реНрднрд░рддрд╛:

"рднрдХреНрддрд┐"
"@ рдкреНрд░рдХрд╛рд░ / рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛": "^ 16.8.23",
"@ рдкреНрд░рдХрд╛рд░ / рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓рдирд┐рд╡рд╛рд╕реА": "^ 0.57.65"
"рдмреЗрдмрд▓-рдкреНрд░реАрд╕реЗрдЯ-рдПрдХреНрд╕рдкреЛ": "^ 6.0.0",
"рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ": "^ 3.4.5"
},

рдПрдХреНрд╕рдкреЛрдЗрдЯ (рдПрд╕рдбреАрдХреЗ 34) рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд╛ рд╡рдЬрди рдпрд╣рд╛рдВ рд╣реИред рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ ExpoKit рдХреЗ рд╕рднреА рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдкрд░ рд▓реЗ рдЪреБрдХрд╛ рд╣реВрдВ, рдЬрд┐рд╕рдореЗрдВ рдирд╡реАрдирддрдо рднреА рд╢рд╛рдорд┐рд▓ рд╣реИред рдореИрдВрдиреЗ рдЗрди рд╕реБрдзрд╛рд░реЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИ, рдХреБрдЫ рд╕рдВрд╢реЛрдзрдиреЛрдВ рдХреЗ рд╕рд╛рде, рдФрд░, рдЕрдм рддрдХ, рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ред

рд╢реИрд▓реА рдкрд░рд┐рд╡рд░реНрддрди рдереЛрдбрд╝рд╛ рдЕрд▓рдЧ рд╣реЛ рд░рд╣рд╛ рд╣реИ @Hopding рдХрд╛ - рдореВрд▓ рд░реВрдк рд╕реЗ рд╡рд┐рдкрд░реАрдд рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИред рдореИрдВрдиреЗ рд╢реИрд▓рд┐рдпреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ ExponentEditText рд╢реИрд▓реА рдХреЛ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд┐рдпрд╛ред рдЬреИрд╕реЗ:

<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 рдЯреЗрдХреНрд╕реНрдЯрдЗрдиреНрдкреБрдЯ рдХреЛ рдПрдХ рд╕реЗрдХреНрд╢рдирд┐рд╕реНрдЯ рдореЗрдВ рдЬреЛрдбрд╝рд╛ред рдореИрдВ рдХрд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рдкрд╣рд▓реА рдХреЛрд╢рд┐рд╢ рдореЗрдВ 60% рд╕рдордп, рджреВрд╕рд░реЗ рджреНрд╡рд╛рд░рд╛ 90% рдФрд░ рддреАрд╕рд░реЗ рдореЗрдВ 100% рдореЗрд░реЗ рдЕрдиреБрднрд╡ рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдмрджрд▓рд╛рд╡ рдХрд┐рдП рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж рдмрд┐рдирд╛ рдХрд┐рд╕реА рддреНрд░реБрдЯрд┐ рдХреЗ рдЗрд╕реЗ рдХрдо рд╕реЗ рдХрдо 10 рдмрд╛рд░ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреАред

рдпрд╣рд╛рдБ рдПрдХ рд╣реА рдореБрджреНрджрд╛ рд╣реИ
рдЖрд░рдПрди: 0.55.4
рдбрд┐рд╡рд╛рдЗрд╕: рдПрдордЖрдИ 8 рд▓рд╛рдЗрдЯ
Android: 8.1.0

java.lang.NullPointerException: рдЖрднрд╛рд╕реА рдкрджреНрдзрддрд┐ 'android.graphics.drawable.Drawable android.graphics.rectable.Drawable $ ConstantState.newDrawable (android.content.res.Resource)' рдХреЛ рдПрдХ рдЕрд╢рдХреНрдд рдСрдмреНрдЬреЗрдХреНрдЯ рд╕рдВрджрд░реНрдн рдкрд░ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред
android.graphics.drawable.rawableContainer $ DrawableContainerState.createAllFutures (DrawableContainer.java:875) рдкрд░
android.graphics.drawable.rawableContainer $ DrawableContainerState.getOpacity (DrawableContainer.java:1158) рдкрд░
android.graphics.drawable.rawableContainer.getOpacity (DrawableContainer.java:433) рдкрд░
android.graphics.drawable.InsetDrawable.getOpacity (InsetDrawable.java.254)
android.view.View.computeOpaqueFlags рдкрд░ (View.java:15748)
android.view.View.set.ackBackgroundDrawable рдкрд░ (View.java:20558)
android.view.View.setBackground рдкрд░ (View.java:20451)
android.view.View рдкрд░ред(View.java:5255)
android.widget.TextView рдкрд░ред(TextView.java:826)
android.widget.EditText рдкрд░ред(EditText.java:88)
android.widget.EditText рдкрд░ред(EditText.java:84)
android.widget.EditText рдкрд░ред(EditText.java:80)
android.widget.EditText рдкрд░ред(EditText.java:76)
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 (рд╣реИрдВрдбрд▓рд░.рдЬрд╛рд╡рд╛: 790) рдкрд░
android.os.Handler.dispatchMessage (Handler.java:99) рдкрд░
com.facebook.react.bridge.queue.essageQueueThreadHandler.dispatchMessage (MessageQueueThreadHandler.java:29)
android.os.Looper.loop (Looper.java:164) рдкрд░
com.facebook.react.bridge.queue.essageQueueThreadImpl $ 3.run (MessageQueueThreadImpl.java:192)
java.lang.Thread.run (Thread.java:764) рдкрд░

рдШрд╛рддрдХ рдЕрдкрд╡рд╛рдж: java.lang.NullPointerException
рдПрдХ рдЕрд╢рдХреНрдд рд╡рд╕реНрддреБ рд╕рдВрджрд░реНрдн рдкрд░ рдЖрднрд╛рд╕реА рдкрджреНрдзрддрд┐ 'android.graphics.rectable.Drawable android.graphics.drawable.rawable $ ConstantState.newDrawable (android.content.res.Resources)' рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред

рд╡рд┐рд╡реЛ 1804
Android рд╕рдВрд╕реНрдХрд░рдг: 9

рдореЗрд░реЗ рд▓рд┐рдП рд╣реЛ рд░рд╣рд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдПрдВрдбреНрд░реЙрдЗрдб 9 рдкрд░ рдЪрд▓рдиреЗ рд╡рд╛рд▓рд╛ рд░рд┐рдПрдХреНрдЯ рдиреЗрдЯрд┐рд╡ рд╕рдВрд╕реНрдХрд░рдг 0.60.4 рд╣реИред рдмрд╣реБрдд рд╣реА рд░реБрдХ-рд░реБрдХ рдХрд░, рд╣рд╛рд▓рд╛рдВрдХрд┐ред

рдореЗрд░реЗ рд▓рд┐рдП рд╣реЛ рд░рд╣рд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдПрдВрдбреНрд░реЙрдЗрдб 9 рдкрд░ рдЪрд▓рдиреЗ рд╡рд╛рд▓рд╛ рд░рд┐рдПрдХреНрдЯ рдиреЗрдЯрд┐рд╡ рд╕рдВрд╕реНрдХрд░рдг 0.60.4 рд╣реИред рдмрд╣реБрдд рд╣реА рд░реБрдХ-рд░реБрдХ рдХрд░, рд╣рд╛рд▓рд╛рдВрдХрд┐ред

рдореЗрд░реЗ рд╕рд╛рде рднреА ...

рдпрд╣рд╛рдВ рднреА, рдПрдВрдбреНрд░реЙрдЗрдб 9 рдкрд░ рд░рд┐рдПрдХреНрдЯ рдиреЗрдЯрд┐рд╡ 0.60.4

рдореИрдВ рдПрдХреНрд╕рдкреЛ рдХреЗ рд╕рд╛рде рд░рд┐рдПрдХреНрдЯ рдиреЗрдЯрд┐рд╡ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рдФрд░ рдЖрдЬ рд╕реБрдмрд╣ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдереАред
рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рдЗрд╕ рд▓рд╛рдЗрди рдХреЛ рдЕрдкрдиреА рд╢реИрд▓рд┐рдпреЛрдВ рдореЗрдВ рдбрд╛рд▓рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреАред рдЗрд╕ рддрд░рд╣ рд╕реЗ 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 the problem _is_ рд░реБрдХ-рд░реБрдХ рдХрд░ рддрд╛рдХрд┐ рдЖрдк рдКрдкрд░ рджрд┐рдП рдЧрдП рдореЗрд░реА рдЯрд┐рдкреНрдкрдгреА рдореЗрдВ рджрд┐рдП рдЧрдП рдбреНрд░реЙрдк-рдЗрди рдШрдЯрдХ рдХреЛ рдкреБрди: рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд╕рдХреЗрдВред рдпрд╣ рдЯрд┐рдкреНрдкрдгреА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдФрд░ рдПрдХ рд╕рдорд╛рдзрд╛рди рднреА рдкреНрд░рджрд╛рди рдХрд░рддреА рд╣реИ рдЬреЛ рдореЗрд░реЗ рдФрд░ рдХрдИ рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддреА рд╣реИред

@wxjer рдореИрдВ рд╕реЗрдЯрд┐рдВрдЧ рдкрд░ рд╕реНрдкрд╖реНрдЯ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдбреЗрдЯрд╛ рдХреА рдХреЛрд╢рд┐рд╢

рдпрд╣рд╛рдБ рднреА, рдПрдВрдбреНрд░реЙрдЗрдб 9 рдФрд░ рдПрдВрдбреНрд░реЙрдЗрдб 8 рдкрд░ рд░рд┐рдПрдХреНрдЯ рдиреЗрдЯрд┐рд╡ 0.60.4

рдХреЛрдИ рднреА рд╕рдорд╛рдзрд╛рди?

рдорд╛рдорд▓реЗ рдореЗрдВ рдХрд┐рд╕реА рдХреЛ рднреА Android рдбрд┐рдмрдЧрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдЪреНрдЫреА рдирдЬрд╝рд░ рд╣реИ рдпрд╣рд╛рдБ рд╣рдорд╛рд░реА рд╕рдВрддрд░реА рддреНрд░реБрдЯрд┐ рд╣реИ рдЬреЛ рдЕрднреА рд░рд┐рдкреЛрд░реНрдЯ рдХреА рдЧрдИ рд╣реИред

рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рджреЗрд╢реА 0.60.4

https://sentry.io/share/issue/e0c581e2e99a4ca48199647b8bd3f497/

рдпрд╣рд╛рдВ рднреА, рдПрдВрдбреНрд░реЙрдЗрдб 9 рдкрд░ рд░рд┐рдПрдХреНрдЯ рдиреЗрдЯрд┐рд╡ 0.60.5

рдирдорд╕реНрдХрд╛рд░! рд╣рдордиреЗ рдЕрдкрдиреЗ TextInput рд╕реЗ рдЕрдВрдбрд░рд▓рд╛рдЗрдирд░ рдХрдЧрд╛рд░ рдХреА рд╕рдВрдкрддреНрддрд┐ рдХреЛ рд╣рдЯрд╛рдХрд░ рдЗрд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ рдФрд░ рдЗрд╕ рд▓рд╛рдЗрди рдХреЛ рд╕реНрдЯрд╛рдЗрд▓ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВред

<item name="android:editTextBackground"><strong i="6">@android</strong>:color/transparent</item>

рдХреНрдпрд╛ рдпрд╣ рдПрдХ рдмрдЧ рд░рд┐рдкреЛрд░реНрдЯ рд╣реИ?

рд╣рд╛рдБ

рдХреНрдпрд╛ рдЖрдкрдиреЗ рдпреЛрдЧрджрд╛рди рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рджрд┐рд╢рд╛рдирд┐рд░реНрджреЗрд╢ рдкрдврд╝реЗ рд╣реИрдВ?

рд╣рд╛рдБ, рдореБрдЭреЗ рдЦреЗрдж рд╣реИ рдХрд┐ рдореИрдВ рдЗрд╕ рд╕реНрдЯреИрдХ рдЯреНрд░реЗрд╕ рдХреЛ рдЫреЛрдбрд╝рдХрд░ рдЗрд╕ рдЕрдкрд╡рд╛рдж рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдирд╣реАрдВ рджреЗ рд╕рдХрддрд╛ рдХреНрдпреЛрдВрдХрд┐ рдХреНрд░реИрд╢ рд░рд┐рдкреЛрд░реНрдЯ Google рдПрдирд╛рд▓рд┐рдЯрд┐рдХреНрд╕ рд╕реЗ рдПрдХрддреНрд░ рдХреА рдЧрдИ рдереА, рдореБрдЭреЗ рдЗрд╕ рдЕрдкрд╡рд╛рдж рдХреЛ рдлрд┐рд░ рд╕реЗ рдкреНрд░рдХрдЯ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рд╣реИред

рд╡рд╛рддрд╛рд╡рд░рдг

рд╡рд╛рддрд╛рд╡рд░рдг:
OS: macOS рд╕рд┐рдПрд░рд╛ 10.12.6
рдиреЛрдб: 8.4.0
рд╕реВрдд: 0.27.5
рдПрдирдкреАрдПрдо: 5.4.0
рдПрдВрдбреНрд░реЙрдЗрдб рд╕реНрдЯреВрдбрд┐рдпреЛ: 3.0

рдкреИрдХреЗрдЬ: (рд╡рд╛рдВрдЫрд┐рдд => рд╕реНрдерд╛рдкрд┐рдд)
рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓: 0.51.0 => 0.51.0
рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛: 16.0.0-рдЕрд▓реНрдлрд╛.12 => 16.0.0-рдЕрд▓реНрдлрд╛.12

рд▓рдХреНрд╖реНрдп рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо: Android (7.1.1)
рдореЛрдмрд╛рдЗрд▓: MIX 2
рдПрдВрдбреНрд░реЙрдпрдб: 7.1.1
java.lang.NullPointerException:
рд▓реБрднрд╛рд╡рдиреЗ рдЖрднрд╛рд╕реА рддрд░реАрдХреЗ 'android.graphics.drawable.rawable android.graphics.drawable.rawable $ ConstantState.newDrawable (android.content.res.Resources)' рдХреЛ рдПрдХ рдЕрд╢рдХреНрдд рд╕рдВрджрд░реНрдн рдкрд░ рджреЗрдЦреЗрдВ
android.graphics.drawable.rawableContainer $ DrawableContainerState.getChild (DrawableContainer.java:888)
android.graphics.drawable.rawableContainer.selectDrawable (DrawableContainer.java:466)
android.graphics.drawable.tateListDrawable.onStateChange (StateListDrawable.java:104)
android.graphics.drawable.rawable.setState (Drawable.java:735) рдкрд░
android.graphics.drawable.rawableWrapper.onStateChange (DrawableWrapper.java:333) рдкрд░
android.graphics.drawable.rawable.setState (Drawable.java:735) рдкрд░
android.graphics.drawable.ayerDrawable.onStateChange (LayerDrawable.java@88888 рдкрд░)
android.graphics.drawable.rawable.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 рдореБрдЭреЗ рднреА

рдЖрд░рдПрди 0.60.5, рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдПрдВрдбреНрд░реЙрдЗрдб 8/9 рдкрд░ (рд╕рдВрднрд╡рддрдГ 10 рднреА, рдмрдбрд╝реЗ рдкреИрдорд╛рдиреЗ рдкрд░ рдЕрднреА рддрдХ рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ) рдЗрд╕ рджреБрд░реНрдШрдЯрдирд╛ рдореЗрдВ рднрд╛рдЧрдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ред

https://github.com/facebook/react-native/issues/17530#issuecomment -504044357 рдореЗрд░реЗ рд▓рд┐рдП рдЯреНрд░рд┐рдХ рдХрд░рдиреЗ рд▓рдЧрддрд╛ рд╣реИред рдЖрдорддреМрд░ рдкрд░, рдХреНрд░реИрд╢ рдкрд╣рд▓реЗ ~ 5 рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рдХреЗ рднреАрддрд░ рдореМрдЬреВрдж рд╣реЛрддрд╛ рд╣реИ, рдЬреЛ рдкрд░реАрдХреНрд╖рдг рдШрдЯрдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рдореИрдВ рдЗрд╕реЗ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рджреБрд░реНрдШрдЯрдирд╛ рдХреЗ рдмрд┐рдирд╛ рдЙрд╕ рдПрдХ рдкрдВрдХреНрддрд┐ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдмрд╛рдж ~ 200 рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рднрд╛рдЧ рдЧрдпрд╛ред

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдкрд░реАрдХреНрд╖рдг рдШрдЯрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдореИрдВ рдПрдВрдбреНрд░реЙрдЗрдб 6 рдкрд░ рднреА рдЗрд╕реЗ рдордЬрд╝рдмреВрддреА рд╕реЗ рдкреБрди: рдкреЗрд╢ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реВрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдлрд┐рд░ рд╕реЗ рд╕реБрдЭрд╛рдП рдЧрдП рдлрд╝рд┐рдХреНрд╕реЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рдЧрддрд╛ рд╣реИред

рдЖрд░рдПрди 0.61 рдкрд░ рдпрд╣рд╛рдВ

HI рджреЛрд╕реНрддреЛрдВ, @diegotsi рд╕рдорд╛рдзрд╛рди рдиреЗ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд┐рдпрд╛ред рдореИрдВрдиреЗ рдЙрд╕рдХреЗ рд╕рдорд╛рдзрд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рд╕реЗ рджреБрд░реНрдШрдЯрдирд╛ рдХреЛ рдХрднреА рдирд╣реАрдВ рджреЗрдЦрд╛

рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдЕрднреА рднреА рдореМрдЬреВрдж рд╣реИ рдФрд░ рдЗрд╕рдиреЗ рдореЗрд░реЗ рдРрдк рдХреЛ рддреЛрдбрд╝ рджрд┐рдпрд╛ - рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдПрдХ рднреНрд░реВрдг рдХреЙрд▓ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рд╕рдм рдХреБрдЫ рдареАрдХ рдЪрд▓ рд░рд╣рд╛ рдерд╛ рдФрд░ рдЕрдм рднреА рдЬрдм рдореИрдВ рдЯрд┐рдкреНрдкрдгреА рдХрд░рддрд╛ рд╣реВрдВ рддреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореБрдЭреЗ рдРрдк рдлрд┐рд░ рд╕реЗ рдЪрд▓ рд░рд╣рд╛ рд╣реИ: рд░реЛ: рдореИрдВ рдПрдХреНрд╕рдкреЛ btw рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рдПрдХреНрд╕рдкреЛ рдРрдк рдХреЛ рдлрд┐рд░ рд╕реЗ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рдХреЗ рдПрдХреНрд╕рдкреЛ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рдХрд┐рдпрд╛

рдЗрд╕ рддреНрд░реБрдЯрд┐ рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рднрд╛рдЧ рдЧрдпрд╛ (рдЖрд░рдПрди: 0.61.1, рдПрдВрдбреНрд░реЙрдЗрдб 10 рдПрдкреА 29)ред 'npm start --reset-cache' рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛ред

@johnbowdenatfacet рдЖрдк рдлрд┐рдХреНрд╕ рдХреА рдкреБрд╖реНрдЯрд┐ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдКрдкрд░ рджрд┐рдП рдЧрдП рдореЗрд░реА рдЯрд┐рдкреНрдкрдгреА рдореЗрдВ рдкреНрд░рджрд╛рди рдХрд┐рдП рдЧрдП рдбреНрд░реЙрдк-рдЗрди рдЯреЗрд╕реНрдЯ рдШрдЯрдХ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рд╡рд╣реА рдореБрджреНрджрд╛ред

рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рджреЗрд╢реА 0.59.10
рдПрдВрдбреНрд░реЙрдпрдб

java.lang.NullPointerException: рдЖрднрд╛рд╕реА рдкрджреНрдзрддрд┐ 'android.graphics.drawable.Drawable android.graphics.rectable.Drawable $ ConstantState.newDrawable (android.content.res.Resource)' рдХреЛ рдПрдХ рдЕрд╢рдХреНрдд рдСрдмреНрдЬреЗрдХреНрдЯ рд╕рдВрджрд░реНрдн рдкрд░ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред
android.graphics.drawable.rawableContainer $ DrawableContainerState.createAllFutures (DrawableContainer.java:875) рдкрд░
android.graphics.drawable.rawableContainer $ DrawableContainerState.getOpacity (DrawableContainer.java:1158) рдкрд░
android.graphics.drawable.rawableContainer.getOpacity (DrawableContainer.java:433) рдкрд░
android.graphics.drawable.InsetDrawable.getOpacity (InsetDrawable.java.254)

рд╡рд╣реА рдореБрджреНрджрд╛ред

рдирдорд╕реНрдХрд╛рд░! рд╣рдордиреЗ рдЕрдкрдиреЗ TextInput рд╕реЗ рдЕрдВрдбрд░рд▓рд╛рдЗрдирд░ рдХрдЧрд╛рд░ рдХреА рд╕рдВрдкрддреНрддрд┐ рдХреЛ рд╣рдЯрд╛рдХрд░ рдЗрд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ рдФрд░ рдЗрд╕ рд▓рд╛рдЗрди рдХреЛ рд╕реНрдЯрд╛рдЗрд▓ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВред

<item name="android:editTextBackground"><strong i="7">@android</strong>:color/transparent</item>

рдореЗрд░реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд┐рдпрд╛, рдмрд╣реБрдд-рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рджред

рдореИрдВ рдмрд╕ (рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓ рд░рди-рдПрдВрдбреНрд░реЙрдЗрдб) рдЪрд▓рд╛, рдЬрд┐рд╕рдиреЗ рдореЗрд░реЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд┐рдпрд╛

0.61.3 рдкрд░ рдПрдХ рд╣реА рдореБрджреНрджрд╛

рдореИрдВ рдЕрднреА рднреА рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреБрдЫ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╣реИрдВ рдЬреЛ рдПрдВрдбреНрд░реЙрдЗрдб рдРрдк рдХреНрд░реИрд╢ рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдЗрддрдиреЗ рдмреЗрддрд░рддреАрдм рдврдВрдЧ рд╕реЗ рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдкреБрди: рдкреЗрд╢ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ред

+1, рдореЗрд░реЗ рд▓рд┐рдП рднреА рдЦреБрд╢

@pedrosimao рдЖрдк рдКрдкрд░ рджрд┐рдП рдЧрдП рдореЗрд░реЗ рдХрдореЗрдВрдЯ рдореЗрдВ рджрд┐рдП рдЧрдП рдбреНрд░реЙрдк-рдЗрди рдЯреЗрд╕реНрдЯ рдХрдВрдкреЛрдиреЗрдВрдЯ рдХреЛ рдЖрдЬрд╝рдорд╛рдирд╛ рдЪрд╛рд╣ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдХрд┐ рджреЛрд╖ рдХреЛ рдордЬрд╝рдмреВрддреА рд╕реЗ рдХрдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдЯрд┐рдкреНрдкрдгреА рднреА рд╕рдорд╕реНрдпрд╛ рдХреЗ рд╕рдорд╛рдзрд╛рди рдХреА рдУрд░ рдЗрд╢рд╛рд░рд╛ рдХрд░рддреА рд╣реИред

рдореИрдВрдиреЗ рдЕрдкрдиреЗ рд▓рд┐рдП рдЗрдирдкреБрдЯ рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдХрдо рдХрд░ рджрд┐рдпрд╛ рд╣реИ рдЬреЛ рдХрд┐ рдореВрд▓ рдЖрдзрд╛рд░ рд╕реЗ рдЖрдпрд╛рдд рдХреА рдЬрд╛рддреА рд╣реИред

рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛:
рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдкреАрд╕реА рдФрд░ рдлреЛрди рдХреЛ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд┐рдпрд╛ рдФрд░ рдлрд┐рд░ рд╕реЗ рдЪрд▓рд╛рдпрд╛, рдпрд╣ рдЖрдХрд░реНрд╖рдг рдХреА рддрд░рд╣ рдХрд╛рдо рдХрд┐рдпрд╛ :)

рдореЗрд░реЗ рдкрд╛рд╕ рднреА рдпрд╣реА рдерд╛ред рдореИрдВрдиреЗ expo r -c рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХреНрд╕рдкреЛ рдХреЛ рдлрд┐рд░ рд╕реЗ рдЪрд▓рд╛рдХрд░ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд╣рд▓ рдХрд┐рдпрд╛ рд╣реИ

рдЖрд░рдПрди 0.59.10 рдХреЗ рд▓рд┐рдП рдПрдХ рд╣реА рдореБрджреНрджреЗ рдХреА рд░рд┐рдкреЛрд░реНрдЯрд┐рдВрдЧ

рдореИрдВрдиреЗ рдкрд╛рдпрд╛ рдХрд┐ рдореИрдиреНрдпреБрдЕрд▓ рдкрд░реАрдХреНрд╖рдг рдмрд╣реБрдд рд╣рд┐рдЯ рдФрд░ рдорд┐рд╕ рд╣реЛрдиреЗ рд╡рд╛рд▓рд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдХреБрдЫ рдРрд╕реЗ рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдХрд╛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдШрдЯрдХ рд▓рд┐рдЦрд╛, рдЬрд┐рдиреНрд╣реЗрдВ рд▓реЛрдЧ рдКрдкрд░ рдмрддрд╛ рд░рд╣реЗ рд╣реИрдВред рдЖрдкрдХреЛ рдиреАрдЪреЗ рдШрдЯрдХ рдорд┐рд▓реЗрдЧрд╛ред рдЖрдкрдХреЛ рдмрд╕ рдЕрдкрдирд╛ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдХрд╣реАрдВ рди рдХрд╣реАрдВ рд░реЗрдВрдбрд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

рдРрд╕рд╛ рдХрд░рддреЗ рд╣реБрдП рдореИрдВрдиреЗ рдкрд╛рдпрд╛ рдХрд┐ рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рд╕реНрдЯрд╛рдЗрд▓ рдореЗрдВ AppTheme рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
<item name="android:editTextBackground"><strong i="8">@android</strong>:color/transparent</item>

рдХреБрдЫ рдФрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рдереА, рдФрд░ underlineColorAndroid рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП _no need_ рдерд╛, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рдерд╛ рдХрд┐ React Native рдЕрдм рдЗрд╕реЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИред

рдЗрд╕ рдлрд┐рдХреНрд╕ рдХрд╛ рдореБрдЦреНрдп рдирдХрд╛рд░рд╛рддреНрдордХ рдкрд╣рд▓реВ рдпрд╣ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдкреИрдбрд┐рдВрдЧ рдХреЗ рдкрд░рд┐рдгрд╛рдореА рдиреБрдХрд╕рд╛рди рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ TextInputs рдХреЛ рдлрд┐рд░ рд╕реЗ рд╕реНрдЯрд╛рдЗрд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдФрд░ рдЖрдк рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЕрдВрдбрд░рд▓рд╛рдЗрдирд┐рдВрдЧ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рднреА рдЦреЛ рджреЗрддреЗ рд╣реИрдВ, рдЬреЛ рдХрд┐ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдПрдХ рд▓рд╛рдн рдерд╛ рдХреНрдпреЛрдВрдХрд┐ рд╣рдордиреЗ рдЗрд╕реЗ рд╣рдореЗрд╢рд╛ "рдкрд╛рд░рджрд░реНрд╢реА" рд╕реЗрдЯ рдХрд┐рдпрд╛ рдерд╛ IOS рдХреЗ рдЕрдиреБрд░реВрдк рд╣реЛрдирд╛ред рдпрджрд┐ рдЖрдкрдХреЛ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рддреЛ рдЖрдк рдПрдХ рд░реИрдкрд░ рдШрдЯрдХ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ onFocus рдФрд░ onBlur рджреЗрдЦрддрд╛ рд╣реИ рдФрд░ рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛ рд░реЗрдЦрд╛рдВрдХрди рдмрдирд╛рддрд╛ рд╣реИред

рд░рд┐рдПрдХреНрдЯ рдиреЗрдЯрд┐рд╡ рдХрд╛ рдореЗрд░рд╛ рд╕рдВрд╕реНрдХрд░рдг 0.57.3 рд╣реИ

рдпрд╣рд╛рдБ рдХреБрдЫ рдЕрдиреНрдп рдЪреАрдЬреЗрдВ рд╣реИрдВ рдЬреЛ рдореБрдЭреЗ рдЕрдкрдиреЗ рдкрд░реАрдХреНрд╖рдг рдШрдЯрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдорд┐рд▓реАрдВ:

  1. рдореИрдВ рдЕрдкрдиреЗ рдХрдо-рдХрд▓реНрдкрдирд╛ Android рдЯреИрдмрд▓реЗрдЯ рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рджреБрд░реНрдШрдЯрдирд╛ рдХрд╛ рдХрд╛рд░рдг рдирд╣реАрдВ рдмрди рд╕рдХрддрд╛ред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдПрдВрдбреНрд░реЙрдЗрдб 7. рдкрд░ рдЪрд▓рдиреЗ рд╡рд╛рд▓реЗ рдореЗрд░реЗ рд╕реИрдорд╕рдВрдЧ рдПрд╕ 6 рдПрдЬ рдлреЛрди рдкрд░ рдкреБрди: рдкреЗрд╢ рдХрд░рдирд╛ рдХрд╛рдлреА рдЖрд╕рд╛рди рдерд╛ред рдореЗрд░рд╛ рдЕрдиреБрдорд╛рди рд╣реИ рдХрд┐ рдПрдХ рджреМрдбрд╝ рдХреА рд╕реНрдерд┐рддрд┐ рд╣реИ рдЬреЛ рдЗрд╕реЗ рднрдбрд╝рдХрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рддреЗрдЬрд╝ рдбрд┐рд╡рд╛рдЗрд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
  2. рдкрд╛рда рдЗрдирдкреБрдЯ рд╕реНрдХреНрд░реЙрд▓ рдХрд░рдиреЗ рд╕реЗ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рд╛, рдФрд░ рдореИрдВ рдмрд┐рдирд╛ рд╕реНрдХреНрд░реЙрд▓ рдХрд┐рдП рд╣реБрдП рднреА рдЖрд╕рд╛рдиреА рд╕реЗ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдкреБрди: рдЙрддреНрдкрдиреНрди рдХрд░ рд╕рдХрддрд╛ рдерд╛ред
  3. рдкрд╛рда рджрд░реНрдЬ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рдерд╛ред рдмрд╕ рдзреНрдпрд╛рди рдмрджрд▓рдиреЗ рд╕реЗ рджреБрд░реНрдШрдЯрдирд╛ рдХрд╛ рдХрд╛рд░рдг рдмрдирдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдерд╛ред
  4. рдЗрд╕рд╕реЗ рдХреЛрдИ рдлрд╝рд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рд╛ рдХрд┐ рдЖрдкрдиреЗ рдХрд┐рд╕ рд░рдВрдЧ рдХреЛ рдЕрдВрдбрд░рд▓рд╛рдЗрди рд╕реЗрдЯ рдХрд┐рдпрд╛, рдпрд╣рд╛рдБ рддрдХ рдХрд┐ undefined рдиреЗ рднреА рджреБрд░реНрдШрдЯрдирд╛ рдХрд╛ рдХрд╛рд░рдг рдмрдирд╛рдпрд╛, рд▓реЗрдХрд┐рди рдЖрдк рд╢рд╛рдпрдж рдпрд╣ рдЙрдореНрдореАрдж рдХрд░реЗрдВрдЧреЗ рдХрд┐ рдЪреВрдВрдХрд┐ рдЕрдм RN рдЗрд╕реЗ "рдкрд╛рд░рджрд░реНрд╢реА" рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЪреВрдХрддрд╛ рд╣реИ
  5. рд╕реНрдХреНрд░реАрди рдкрд░ рдХреЗрд╡рд▓ 10 рдХреА рддреБрд▓рдирд╛ рдореЗрдВ 100 рдХреЗ рд╕рд╛рде рддреЗрдЬ рджреБрд░реНрдШрдЯрдирд╛ рд╣реЛрдиреЗ рдХреЗ рд╕рд╛рде рдПрдХ рдмрд╛рд░ рдореЗрдВ рджрд┐рдЦрдиреЗ рд╡рд╛рд▓реЗ TextInputs рдХреА рдЙрдЪрд┐рдд рд╕рдВрдЦреНрдпрд╛ рд╣реЛрдиреЗ рд╕реЗ рдлрд░реНрдХ рдкрдбрд╝рд╛ред
  6. рдореИрдВ 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 рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

рдореБрдЭреЗ рдпрд╛рдж рдирд╣реАрдВ рдЖ рд░рд╣рд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдХреАрдмреЛрд░реНрдб рдХреЛ рдЗрд╕ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдЙрдкрд╕реНрдерд┐рдд рд╣реЛрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореИрдВ рдпрд╣ рдЙрдореНрдореАрдж рдХрд░реВрдВрдЧрд╛ рдХрд┐ рдЬрдм рдкрд╛рда рдЗрдирдкреБрдЯ рдлреЛрдХрд╕реНрдб рд╣реЛ рддреЛ рдпрд╣ рджрд┐рдЦрд╛рдИ рджреЗред рдХреНрдпрд╛ рдЖрдк рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЙрдкрдХрд░рдг рдпрд╛ рдПрдХ рдПрдореБрд▓реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ?

рдХреНрдпрд╛ рдЖрдк рдЯреЗрдХреНрд╕реНрдЯ рдЗрдирдкреБрдЯ рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрдиреЗ рд╡рд╛рд▓реЗ рдХрд░реНрд╕рд░ рдХреЛ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдлреЛрдХрд╕реНрдб рдереЗ, рдФрд░ рдХреНрдпрд╛ рдШрдЯрдХ рдЖрдкрдХреЗ рд▓рд┐рдП рдХреНрд░реИрд╢ рдХреЛ рдкреБрди: рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛?

рдпрд╣ рд╡рд╣реА

рдПрдВрдбреНрд░реЙрдЗрдб рдлреЛрди рдХреА рд╡рд┐рд╡рд┐рдзрддрд╛ рдкрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ 0.59 рдореЗрдВ рд╣реЛрддреА рд╣реИред

рд╕рд╛рде рдШрдЯрдХреЛрдВ рдореЗрдВ рдмреЗрддрд░рддреАрдм рдврдВрдЧ рд╕реЗ рд╣реЛрддрд╛ рд╣реИ TextInput рднреАрддрд░ рдиреЗрд╕реНрдЯ Flatlist

рдЗрд╕ рдзрд╛рдЧреЗ рдореЗрдВ рдЪрд░реНрдЪрд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ underlineColorAndroid={null} atrribute рдХреЛ TextInput рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдЧрдИ, рд▓реЗрдХрд┐рди рддреНрд░реБрдЯрд┐ рд╕рд╛рдордиреЗ рдЖрдИ

рдореБрдЭреЗ рдЕрдкрдирд╛ рдлрд╝реЛрди рдкреБрдирдГ рдЖрд░рдВрдн рдХрд░рдирд╛ рдерд╛ рдФрд░ рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП EXPO рдХреЛ рдкреБрди: рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рдерд╛ред рдЕрдЧрд░ рд╡рд╣ рдЖрдкрдХреЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛, рддреЛ рдореИрдВ рдЖрдкрдХреЗ рдХреИрд╢ рдФрд░ EXPO APP рдХреЗ рдХреИрд╢ рдХреЛ рдХреНрд▓рд┐рдпрд░ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ред

рдХреЛрдИ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рдорд┐рд▓рд╛ рдХрд┐ рдХреИрд╕реЗ рдкрд╣рд▓реА рдЬрдЧрд╣ рдореЗрдВ рддреНрд░реБрдЯрд┐ рд╣реБрдИред рдореИрдВ рдЗрд╕реЗ рджреЛрдмрд╛рд░рд╛ рдирд╣реАрдВ рдмрдирд╛ рд╕рдХрд╛ рдФрд░ рди рд╣реА рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛ рд╕рдХрд╛ рдХрд┐ рдЗрд╕реЗ рджреЛрдмрд╛рд░рд╛ рд╣реЛрдиреЗ рд╕реЗ рдХреИрд╕реЗ рд░реЛрдХрд╛ рдЬрд╛рдПред
рдпрд╣ рдЕрднреА рд╢реБрд░реВ рд╣реБрдЖ рдФрд░ рдореЗрд░реЗ рдХреЛрдб рдореЗрдВ рдЬреЛ рднреА рдмрджрд▓рд╛рд╡ рдЖрдпрд╛, рд╡рд╣ рдЗрд╕реЗ рдареАрдХ рдирд╣реАрдВ рдХрд░рддрд╛ред рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ EXPO APP рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ APP рдореЗрдВ ERROR рджреЗрдЦрддрд╛ рд╣реВрдВ рд▓реЗрдХрд┐рди рдореЗрд░реЗ рдХрдВрд╕реЛрд▓ рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рд╕реНрдерд╛рди рдкрд░ рдирд╣реАрдВред

+1 рддреНрд░реБрдЯрд┐ рдЕрднреА рднреА RN 0.59.9 рдореЗрдВ рдореМрдЬреВрдж рд╣реИред рдлрд╛рдпрд░рдмреЗрд╕ рд╕реЗ рджреБрд░реНрдШрдЯрдирд╛рдЧреНрд░рд╕реНрдд рд╣реЛрдиреЗ рдХреА рд╕реВрдЪрдирд╛ рджреА

рдЖрд░рдПрди 0.61 рдкрд░ рдпрд╣ рддреНрд░реБрдЯрд┐ рдкрд╛рдиреЗ рд╡рд╛рд▓рд╛ рдкрд╣рд▓рд╛ рд╡реНрдпрдХреНрддрд┐?

RN 0.61 рдореЗрдВ рд╕рдорд╛рди рддреНрд░реБрдЯрд┐ рд╣реЛрдиреЗ рдкрд░, @diegotsi рдХреЗ рд╕рдорд╛рдзрд╛рди рдиреЗ рдЗрд╕реЗ рдареАрдХ рдХрд░ рджрд┐рдпрд╛ред
рдпрд╣ рдПрдХ рдЧрдВрднреАрд░ рд╕рдорд╕реНрдпрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рдкрд╣рд▓реА рдмрд╛рд░ рдкреВрд░реНрд╡-рдЙрддреНрдкрд╛рджрди рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдореЗрд░реЗ рд╕рд╛рде рд╣реБрдЖ рдерд╛, рдФрд░ рдореИрдВ рдЗрд╕реЗ рдХрднреА рднреА рджреБрд░реНрдШрдЯрдирд╛рдЧреНрд░рд╕реНрдд рд╣реЛрдиреЗ рдХреЗ рдмрд┐рдирд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рдерд╛, рдХреНрдпреЛрдВрдХрд┐ рдЕрдирд┐рд╢реНрдЪрд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рдХрд╛рд░рдг рдЗрд╕реЗ рдкреБрди: рдкреЗрд╢ рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред

рдХреНрдпрд╛ рдпрд╣ рдПрдХ рдмрдЧ рд░рд┐рдкреЛрд░реНрдЯ рд╣реИ?

рд╣рд╛рдБ

рдХреНрдпрд╛ рдЖрдкрдиреЗ рдпреЛрдЧрджрд╛рди рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рджрд┐рд╢рд╛рдирд┐рд░реНрджреЗрд╢ рдкрдврд╝реЗ рд╣реИрдВ?

рд╣рд╛рдБ, рдореБрдЭреЗ рдЦреЗрдж рд╣реИ рдХрд┐ рдореИрдВ рдЗрд╕ рд╕реНрдЯреИрдХ рдЯреНрд░реЗрд╕ рдХреЛ рдЫреЛрдбрд╝рдХрд░ рдЗрд╕ рдЕрдкрд╡рд╛рдж рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдирд╣реАрдВ рджреЗ рд╕рдХрддрд╛ рдХреНрдпреЛрдВрдХрд┐ рдХреНрд░реИрд╢ рд░рд┐рдкреЛрд░реНрдЯ Google рдПрдирд╛рд▓рд┐рдЯрд┐рдХреНрд╕ рд╕реЗ рдПрдХрддреНрд░ рдХреА рдЧрдИ рдереА, рдореБрдЭреЗ рдЗрд╕ рдЕрдкрд╡рд╛рдж рдХреЛ рдлрд┐рд░ рд╕реЗ рдкреНрд░рдХрдЯ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рд╣реИред

рд╡рд╛рддрд╛рд╡рд░рдг

рд╡рд╛рддрд╛рд╡рд░рдг:
OS: macOS рд╕рд┐рдПрд░рд╛ 10.12.6
рдиреЛрдб: 8.4.0
рд╕реВрдд: 0.27.5
рдПрдирдкреАрдПрдо: 5.4.0
рдПрдВрдбреНрд░реЙрдЗрдб рд╕реНрдЯреВрдбрд┐рдпреЛ: 3.0

рдкреИрдХреЗрдЬ: (рд╡рд╛рдВрдЫрд┐рдд => рд╕реНрдерд╛рдкрд┐рдд)
рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓: 0.51.0 => 0.51.0
рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛: 16.0.0-рдЕрд▓реНрдлрд╛.12 => 16.0.0-рдЕрд▓реНрдлрд╛.12

рд▓рдХреНрд╖реНрдп рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо: Android (7.1.1)
рдореЛрдмрд╛рдЗрд▓: MIX 2
рдПрдВрдбреНрд░реЙрдпрдб: 7.1.1
java.lang.NullPointerException:
рд▓реБрднрд╛рд╡рдиреЗ рдЖрднрд╛рд╕реА рддрд░реАрдХреЗ 'android.graphics.drawable.rawable android.graphics.drawable.rawable $ ConstantState.newDrawable (android.content.res.Resources)' рдХреЛ рдПрдХ рдЕрд╢рдХреНрдд рд╕рдВрджрд░реНрдн рдкрд░ рджреЗрдЦреЗрдВ
android.graphics.drawable.rawableContainer $ DrawableContainerState.getChild (DrawableContainer.java:888)
android.graphics.drawable.rawableContainer.selectDrawable (DrawableContainer.java:466)
android.graphics.drawable.tateListDrawable.onStateChange (StateListDrawable.java:104)
android.graphics.drawable.rawable.setState (Drawable.java:735) рдкрд░
android.graphics.drawable.rawableWrapper.onStateChange (DrawableWrapper.java:333) рдкрд░
android.graphics.drawable.rawable.setState (Drawable.java:735) рдкрд░
android.graphics.drawable.ayerDrawable.onStateChange (LayerDrawable.java@88888 рдкрд░)
android.graphics.drawable.rawable.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 рдПрдирд╛рд▓рд┐рдЯрд┐рдХреНрд╕ рд╕реЗ рдПрдХрддреНрд░ рдХреА рдЧрдИ рдереА, рдореБрдЭреЗ рдЗрд╕ рдЕрдкрд╡рд╛рдж рдХреЛ рдлрд┐рд░ рд╕реЗ рдкреНрд░рдХрдЯ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рд╣реИред

рд╡рд╛рддрд╛рд╡рд░рдг

рд╡рд╛рддрд╛рд╡рд░рдг:
OS: macOS рд╕рд┐рдПрд░рд╛ 10.12.6
рдиреЛрдб: 8.4.0
рд╕реВрдд: 0.27.5
рдПрдирдкреАрдПрдо: 5.4.0
рдПрдВрдбреНрд░реЙрдЗрдб рд╕реНрдЯреВрдбрд┐рдпреЛ: 3.0

рдкреИрдХреЗрдЬ: (рд╡рд╛рдВрдЫрд┐рдд => рд╕реНрдерд╛рдкрд┐рдд)
рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓: 0.51.0 => 0.51.0
рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛: 16.0.0-рдЕрд▓реНрдлрд╛.12 => 16.0.0-рдЕрд▓реНрдлрд╛.12

рд▓рдХреНрд╖реНрдп рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо: Android (7.1.1)
рдореЛрдмрд╛рдЗрд▓: MIX 2
рдПрдВрдбреНрд░реЙрдпрдб: 7.1.1
java.lang.NullPointerException:
рд▓реБрднрд╛рд╡рдиреЗ рдЖрднрд╛рд╕реА рддрд░реАрдХреЗ 'android.graphics.drawable.rawable android.graphics.drawable.rawable $ ConstantState.newDrawable (android.content.res.Resources)' рдХреЛ рдПрдХ рдЕрд╢рдХреНрдд рд╕рдВрджрд░реНрдн рдкрд░ рджреЗрдЦреЗрдВ
android.graphics.drawable.rawableContainer $ DrawableContainerState.getChild (DrawableContainer.java:888)
android.graphics.drawable.rawableContainer.selectDrawable (DrawableContainer.java:466)
android.graphics.drawable.tateListDrawable.onStateChange (StateListDrawable.java:104)
android.graphics.drawable.rawable.setState (Drawable.java:735) рдкрд░
android.graphics.drawable.rawableWrapper.onStateChange (DrawableWrapper.java:333) рдкрд░
android.graphics.drawable.rawable.setState (Drawable.java:735) рдкрд░
android.graphics.drawable.ayerDrawable.onStateChange (LayerDrawable.java@88888 рдкрд░)
android.graphics.drawable.rawable.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)

рдРрд╕рд╛ рддрдм рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдореИрдВ рд╢реИрд▓реА рдореЗрдВ рдХреБрдЫ рдмрджрд▓ рд░рд╣рд╛ рд╣реВрдВ рдЬреИрд╕реЗ рдЬрд╕реНрдЯрд┐рдлрд╝реЙрдиреНрдЯ рдХреЛ рд╣рдЯрд╛рдирд╛ рдпрд╛ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдзрдмреНрдмрд╛ рд▓рдЧрд╛рдирд╛ рдФрд░ рдЕрд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рдРрдк рдХреЗ рдХрд╛рдо рдХреЛ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд░рдирд╛ред

@cinocai, @Sargnec рдПрдЯ рдЕрд▓, рдЗрд╕ рдЯрд┐рдкреНрдкрдгреА рдзрд╛рдЧрд╛ рдЗрддрдиреЗ рд▓рдВрдмреЗ рд╕рдордп рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд▓реЛрдЧреЛрдВ рдХреЛ рдкрд░реАрдХреНрд╖рдг рдХреЗ рдШрдЯрдХ рдореИрдВ рдкреЛрд╕реНрдЯ рдпрд╛рдж рдХрд░ рд░рд╣реЗ рд╣реИрдВ рд╣реЛ рд░рд╣реА рд╣реИ рдЗрд╕рдХреЗ рдмрд╛рдж рдХреЗ рд╕рдВрд╕реНрдХрд░рдг

рдКрдкрд░ рдХреЗ рдХрдИ рд▓реЛрдЧреЛрдВ рдиреЗ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рджреЛрд╣рд░рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рд╣реИ, рдФрд░ рд╕рдорд╛рдзрд╛рди рдХреЛ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд┐рдпрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдЙрд╕ рдЯрд┐рдкреНрдкрдгреА рдореЗрдВ рднреА рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

@ рдЧреНрд▓реЗрди-рдПрдХреНрд╕рд┐рд╕: рдкрд░реАрдХреНрд╖рдг рдШрдЯрдХ рдХреЗ рд╕рд╛рде рдорд╣рд╛рди рдХрд╛рдо, рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдмреЗрд╣рддрд░ рдврдВрдЧ рд╕реЗ рд╕рдордЭрдиреЗ рдореЗрдВ рдмрд╣реБрдд рдорджрджрдЧрд╛рд░ рдерд╛ред
рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕рдХрд╛ рд╕рдорд╛рдзрд╛рди рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрдШрд░реНрд╖ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдкрдиреЗ displayForMs: 0 рд╕реЗрдЯ рдХрд░рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛ рд╣реИ, рдпрд╣ рдХреНрд░реИрд╢ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рдЕрдЧрд░ рдореИрдВ рдЧрд▓рдд рдирд╣реАрдВ рд╣реВрдВ, рддреЛ рдРрд╕рд╛ рдХрд░рдХреЗ, 100 TextInputs рдХреЛ рдХрднреА рднреА рдЕрдирдорд╛рдЙрдВрдЯ (рдХреЗрд╡рд▓ рдЕрдкрдбреЗрдЯ) рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдХреЛрдИ рдирдпрд╛ рднреА рдирд╣реАрдВред

рдореИрдВрдиреЗ displayForMs: 3000 рд╕реНрд╡рдпрдВ рд╕реЗрдЯ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рдФрд░ 2 рдЕрдиреНрдп рдкрд░рд┐рд╡рд░реНрддрди рдХрд┐рдП, рдЬрд┐рд╕рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рд╕реЗрдЯ рд░рд╛рдЬреНрдп рдкрд░ рд╕рднреА 100 рдорд╛рдЙрдВрдЯреЗрдб (рдХреЗрд╡рд▓ рдЕрджреНрдпрддрди) рд░рд╣реЗред

рдкрд░рд┐рд╡рд░реНрддрди

  • const key = this.state.startKey + i + ""; --- - рдХрд╛рд╕реНрдЯ рдХреА = ${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) рдорд╛рдЙрдВрдЯ рдХрд┐рдпрд╛ред
рдФрд░ рдпрд╣ рдЙрдореНрдореАрдж рдХреЗ рдореБрддрд╛рдмрд┐рдХ рдХреНрд░реИрд╢ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рдЕрдВрдд рдореЗрдВ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд░реАрдорд╛рдЙрдВрдЯрд┐рдВрдЧ (рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ TextInputs) рд╣реИ рдЬреЛ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИред рдореИрдВрдиреЗ рдЙрд╕ рдРрдк рдореЗрдВ рдЗрд╕реЗ рдкреБрди: рдкреЗрд╢ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рдЬрд┐рд╕ рдкрд░ рдореИрдВ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдЬрд┐рд╕рдореЗрдВ рджреБрд░реНрдШрдЯрдирд╛ рдХреА рд╕реВрдЪрдирд╛ рдорд┐рд▓реА рдереАред

рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ 2 рд╕реНрдХреНрд░реАрди рд╣реИрдВ, рдЬрд┐рдирдореЗрдВ рд╕реЗ 2 рдореЗрдВ TextInputs рдФрд░ 4 рдХреЗ рд╕рд╛рде рджреВрд╕рд░рд╛ рд╣реИ, рдореИрдВ рд╕реНрдХреНрд░реАрди рдХреЛ рдЖрдЧреЗ рдФрд░ рдкреАрдЫреЗ рдиреЗрд╡рд┐рдЧреЗрдЯ рдХрд░рддрд╛ рд░рд╣рд╛, рдЬреЛ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдкреВрд░реА рд╕реНрдХреНрд░реАрди рд╕рд╛рдордЧреНрд░реА рдХреЛ рдпрд╛рдж рд░рдЦрддрд╛ рд╣реИ, рдФрд░ рдЖрдЦрд┐рд░рдХрд╛рд░ рдереЛрдбрд╝реА рджреЗрд░ рдХреЗ рдмрд╛рдж рдореИрдВ рджреБрд░реНрдШрдЯрдирд╛рдЧреНрд░рд╕реНрдд рд╣реЛрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛ред

рдЗрд╕рдХреЗ рд╕рд╛рде рдореИрдВ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ TextInput unmount рдирд╣реАрдВ рджреЗрдирд╛ рдПрдХ рд╡реНрдпрд╡рд╣рд╛рд░реНрдп рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реИред рд▓реЗрдХрд┐рди рдЕрднреА рднреА рдкрддрд╛ рдирд╣реАрдВ рдХреНрдпрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕ рдХрд╛рд░рдг!

рдзреНрдпрд╛рди рджреЗрдВ

  • рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдпрд╣ underlineColorAndroid рд╕рдВрдкрддреНрддрд┐ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдореИрдВрдиреЗ <item name="android:editTextBackground"><strong i="18">@android</strong>:color/transparent</item> рд╕рд╛рде рдЗрд╕реЗ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИ, рдФрд░ рдХреЛрдИ рдЕрдВрддрд░ рдирд╣реАрдВ рд╣реИред [рд╕рдВрдкрд╛рджрд┐рдд: рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдм рдХреЗ рд▓рд┐рдП рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИ]
  • рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдореИрдВ ScrollView рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдмрд┐рдирд╛ рджреБрд░реНрдШрдЯрдирд╛рдЧреНрд░рд╕реНрдд рд╣реЛрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛ред
  • рдФрд░ TextInput рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рдирд╛ рднреА рджреБрд░реНрдШрдЯрдирд╛рдЧреНрд░рд╕реНрдд рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рдерд╛, рдмрд╕ рдЙрди 100 TextInputs рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рджреБрд░реНрдШрдЯрдирд╛ рд╣реБрдИред

рдзрдиреНрдпрд╡рд╛рдж!

@rimzici рд╣рд╛рдБ рдпрд╣ рд╕рдЪ рд╣реИред рдХреНрд░реИрд╢ рдПрдХ рдПрдбрд┐рдЯрдЯреЗрдХреНрд╕реНрдЯ рдХреЗ рд░реАрдорд╛рдЙрдВрдЯрд┐рдВрдЧ / рдЗрдВрд╕реНрдЯреЗрдВрдЯрд┐рдорд┐рдЯрд┐рдВрдЧ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ рдХрднреА-рдХрднреА рдмреИрдХрдЧреНрд░рд╛рдЙрдВрдб рдбреНрд░реЙрдмрд▓реНрд╕ рд╢реВрдиреНрдп рд╣реЛрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдЕрдЬреАрдм рддрд░рд╣ рд╕реЗ, рдЬрдм рдЖрдк <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 рдФрд░ @ рдЧреНрд▓реЗрди-рдПрдХреНрд╕рд╕реА! рдЖрдк рд╕рд╣реА рд╣реИрдВ, <item name="android:editTextBackground"><strong i="6">@android</strong>:color/transparent</item> рдХрд░рдирд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдареАрдХ рдХрд░рддрд╛ рд╣реИред

рдореИрдВ рднреВрд▓ рдЧрдпрд╛ рдХрд┐ рдЬреЗрдПрд╕ рд▓реЛрдб рдХрд░рддреЗ рд╕рдордп рд╕рдлреЗрдж рд╕реНрдХреНрд░реАрди рдХреЛ рдХрд╡рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореИрдВрдиреЗ рдЕрдкрдиреА рдореБрдЦреНрдп рдЧрддрд┐рд╡рд┐рдзрд┐ рдкрд░ рдПрдХ рд╕реНрдкреНрд▓реИрд╢ рдереАрдо рд╕реЗрдЯ рдХреА рдереАред

рдЕрдм рдореИрдВ рдкреБрд╖реНрдЯрд┐ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рджреБрд░реНрдШрдЯрдирд╛ рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╕рдкрд╛рд╕ рдХрд╛ рдХрд╛рдо рдкреНрд░рднрд╛рд╡реА рд╣реИред

рдХрд┐рд╕реА рднреА рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд╕рд╛рде рдЕрджреНрдпрддрди рдХрд░реЗрдЧрд╛ред

рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рджреЗрд╢реА 0.61.5 <- рдпрд╣рд╛рдБ рднреА рд╣реИ!

рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рджреЗрд╢реА 0.62.0.rc-1 <- рдпрд╣рд╛рдБ рднреА рд╣реИ!

[email protected] рдкрд░ рд╕рдорд╛рди рддреНрд░реБрдЯрд┐

рд╕рдВрддрд░реА рджреНрд╡рд╛рд░рд╛ рдкрдХрдбрд╝реА рдЧрдИ рдПрдХ рд╣реА рддреНрд░реБрдЯрд┐ рдХреА рдХрдИ рдШрдЯрдирд╛рдПрдВ: https://sentry.io/share/issue/ac1e7c55f1594b118f0faaf8d11de5c4/

рдЖрд░рдПрди 0.59.9 рдкрд░

RN 0.55.4 рдкрд░ рд╕рдорд╛рди рддреНрд░реБрдЯрд┐

RN 2.0.1 рдкрд░ рд╕рдорд╛рди рдЕрдВрдХ

рдХрд┐рд╕реА рднреА TextInput рдХреЗ рд▓рд┐рдП 'underlineColorAndroid' рд╕рд╣рд╛рд░рд╛ рд╕реЗрдЯ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдореВрд▓ рд╢реИрд▓рд┐рдпреЛрдВ рджреНрд╡рд╛рд░рд╛ рд╕рднреА рдкрд╛рда рдЗрдирдкреБрдЯ рдкреГрд╖реНрдарднреВрдорд┐ рдХреЛ рд╣рдЯрд╛ рджреЗрдВред

goto android \ app \ src \ main \ res \ рдорд╛рди \ style.xml

рдиреАрдЪреЗ рдХреА рддрд░рд╣ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░реЗрдВ:

рдЖрд░рдПрди 0.61.5 рдкрд░ рднреА

рдореИрдВрдиреЗ рдкрд╛рдпрд╛ рдХрд┐ рдореИрдиреНрдпреБрдЕрд▓ рдкрд░реАрдХреНрд╖рдг рдмрд╣реБрдд рд╣рд┐рдЯ рдФрд░ рдорд┐рд╕ рд╣реЛрдиреЗ рд╡рд╛рд▓рд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдХреБрдЫ рдРрд╕реЗ рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдХрд╛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдШрдЯрдХ рд▓рд┐рдЦрд╛, рдЬрд┐рдиреНрд╣реЗрдВ рд▓реЛрдЧ рдКрдкрд░ рдмрддрд╛ рд░рд╣реЗ рд╣реИрдВред рдЖрдкрдХреЛ рдиреАрдЪреЗ рдШрдЯрдХ рдорд┐рд▓реЗрдЧрд╛ред рдЖрдкрдХреЛ рдмрд╕ рдЕрдкрдирд╛ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдХрд╣реАрдВ рди рдХрд╣реАрдВ рд░реЗрдВрдбрд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

рдРрд╕рд╛ рдХрд░рддреЗ рд╣реБрдП рдореИрдВрдиреЗ рдкрд╛рдпрд╛ рдХрд┐ рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рд╕реНрдЯрд╛рдЗрд▓ рдореЗрдВ AppTheme рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
<item name="android:editTextBackground"><strong i="8">@android</strong>:color/transparent</item>

рдХреБрдЫ рдФрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рдереА, рдФрд░ underlineColorAndroid рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП _no need_ рдерд╛, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рдерд╛ рдХрд┐ React Native рдЕрдм рдЗрд╕реЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИред

рдЗрд╕ рдлрд┐рдХреНрд╕ рдХрд╛ рдореБрдЦреНрдп рдирдХрд╛рд░рд╛рддреНрдордХ рдкрд╣рд▓реВ рдпрд╣ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдкреИрдбрд┐рдВрдЧ рдХреЗ рдкрд░рд┐рдгрд╛рдореА рдиреБрдХрд╕рд╛рди рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ TextInputs рдХреЛ рдлрд┐рд░ рд╕реЗ рд╕реНрдЯрд╛рдЗрд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдФрд░ рдЖрдк рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЕрдВрдбрд░рд▓рд╛рдЗрдирд┐рдВрдЧ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рднреА рдЦреЛ рджреЗрддреЗ рд╣реИрдВ, рдЬреЛ рдХрд┐ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдПрдХ рд▓рд╛рдн рдерд╛ рдХреНрдпреЛрдВрдХрд┐ рд╣рдордиреЗ рдЗрд╕реЗ рд╣рдореЗрд╢рд╛ "рдкрд╛рд░рджрд░реНрд╢реА" рд╕реЗрдЯ рдХрд┐рдпрд╛ рдерд╛ IOS рдХреЗ рдЕрдиреБрд░реВрдк рд╣реЛрдирд╛ред рдпрджрд┐ рдЖрдкрдХреЛ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рддреЛ рдЖрдк рдПрдХ рд░реИрдкрд░ рдШрдЯрдХ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ onFocus рдФрд░ onBlur рджреЗрдЦрддрд╛ рд╣реИ рдФрд░ рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛ рд░реЗрдЦрд╛рдВрдХрди рдмрдирд╛рддрд╛ рд╣реИред

рд░рд┐рдПрдХреНрдЯ рдиреЗрдЯрд┐рд╡ рдХрд╛ рдореЗрд░рд╛ рд╕рдВрд╕реНрдХрд░рдг 0.57.3 рд╣реИ

рдпрд╣рд╛рдБ рдХреБрдЫ рдЕрдиреНрдп рдЪреАрдЬреЗрдВ рд╣реИрдВ рдЬреЛ рдореБрдЭреЗ рдЕрдкрдиреЗ рдкрд░реАрдХреНрд╖рдг рдШрдЯрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдорд┐рд▓реАрдВ:

  1. рдореИрдВ рдЕрдкрдиреЗ рдХрдо-рдХрд▓реНрдкрдирд╛ Android рдЯреИрдмрд▓реЗрдЯ рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рджреБрд░реНрдШрдЯрдирд╛ рдХрд╛ рдХрд╛рд░рдг рдирд╣реАрдВ рдмрди рд╕рдХрддрд╛ред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдПрдВрдбреНрд░реЙрдЗрдб 7. рдкрд░ рдЪрд▓рдиреЗ рд╡рд╛рд▓реЗ рдореЗрд░реЗ рд╕реИрдорд╕рдВрдЧ рдПрд╕ 6 рдПрдЬ рдлреЛрди рдкрд░ рдкреБрди: рдкреЗрд╢ рдХрд░рдирд╛ рдХрд╛рдлреА рдЖрд╕рд╛рди рдерд╛ред рдореЗрд░рд╛ рдЕрдиреБрдорд╛рди рд╣реИ рдХрд┐ рдПрдХ рджреМрдбрд╝ рдХреА рд╕реНрдерд┐рддрд┐ рд╣реИ рдЬреЛ рдЗрд╕реЗ рднрдбрд╝рдХрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рддреЗрдЬрд╝ рдбрд┐рд╡рд╛рдЗрд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
  2. рдкрд╛рда рдЗрдирдкреБрдЯ рд╕реНрдХреНрд░реЙрд▓ рдХрд░рдиреЗ рд╕реЗ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рд╛, рдФрд░ рдореИрдВ рдмрд┐рдирд╛ рд╕реНрдХреНрд░реЙрд▓ рдХрд┐рдП рд╣реБрдП рднреА рдЖрд╕рд╛рдиреА рд╕реЗ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдкреБрди: рдЙрддреНрдкрдиреНрди рдХрд░ рд╕рдХрддрд╛ рдерд╛ред
  3. рдкрд╛рда рджрд░реНрдЬ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рдерд╛ред рдмрд╕ рдзреНрдпрд╛рди рдмрджрд▓рдиреЗ рд╕реЗ рджреБрд░реНрдШрдЯрдирд╛ рдХрд╛ рдХрд╛рд░рдг рдмрдирдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдерд╛ред
  4. рдЗрд╕рд╕реЗ рдХреЛрдИ рдлрд╝рд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рд╛ рдХрд┐ рдЖрдкрдиреЗ рдХрд┐рд╕ рд░рдВрдЧ рдХреЛ рдЕрдВрдбрд░рд▓рд╛рдЗрди рд╕реЗрдЯ рдХрд┐рдпрд╛, рдпрд╣рд╛рдБ рддрдХ рдХрд┐ undefined рдиреЗ рднреА рджреБрд░реНрдШрдЯрдирд╛ рдХрд╛ рдХрд╛рд░рдг рдмрдирд╛рдпрд╛, рд▓реЗрдХрд┐рди рдЖрдк рд╢рд╛рдпрдж рдпрд╣ рдЙрдореНрдореАрдж рдХрд░реЗрдВрдЧреЗ рдХрд┐ рдЪреВрдВрдХрд┐ рдЕрдм RN рдЗрд╕реЗ "рдкрд╛рд░рджрд░реНрд╢реА" рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЪреВрдХрддрд╛ рд╣реИ
  5. рд╕реНрдХреНрд░реАрди рдкрд░ рдХреЗрд╡рд▓ 10 рдХреА рддреБрд▓рдирд╛ рдореЗрдВ 100 рдХреЗ рд╕рд╛рде рддреЗрдЬ рджреБрд░реНрдШрдЯрдирд╛ рд╣реЛрдиреЗ рдХреЗ рд╕рд╛рде рдПрдХ рдмрд╛рд░ рдореЗрдВ рджрд┐рдЦрдиреЗ рд╡рд╛рд▓реЗ TextInputs рдХреА рдЙрдЪрд┐рдд рд╕рдВрдЦреНрдпрд╛ рд╣реЛрдиреЗ рд╕реЗ рдлрд░реНрдХ рдкрдбрд╝рд╛ред
  6. рдореИрдВ 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 рдкрд░ рдХрд╛рдо рдХрд┐рдпрд╛

рдЬреЛ рд▓реЛрдЧ рдЗрд╕реЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдЙрдирдХреЗ рд▓рд┐рдП рд▓рд┐рдВрдХ рдпрд╣рд╛рдБ рд╣реИ

рд╢рд╛рдпрдж рдЖрдк рдЕрдкрдиреА рдЯрд┐рдкреНрдкрдгреА рдореЗрдВ рдЙрд╕ рд▓рд┐рдВрдХ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛрдВрдЧреЗред

рдареАрдХ @ рдЧреНрд▓реЗрди-axsy рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд┐рдпрд╛ рд╕реЗ (рдХрд┐рдпрд╛ рдерд╛ рдкрд░реАрдХреНрд╖рдг рдШрдЯрдХ ЁЯСПЁЯСПЁЯСП), рд▓реЗрдХрд┐рди рдореИрдВ рдЬрд┐рд╕ рддрд░рд╣ рдПрдХ рдФрд░ рдЦреЛ рдЖрддреНрдорд╛ рдорджрдж рдорд┐рд▓ рд╕рдХрддреА рд╣реИ рд╕рд╛рде рдХреБрдЫ рдкрд░реЗрд╢рд╛рдиреА рдореЗрдВ рднрд╛рдЧ:

рдореЗрд░реЗ AppTheme рдХреЛ AndroidManifest.xml рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЕрдиреБрдЪрд┐рдд рд░реВрдк рд╕реЗ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рдерд╛, рдХреНрдпреЛрдВрдХрд┐ рдПрдХ рд╕реНрдкреНрд▓реИрд╢-рд╕реНрдХреНрд░реАрди рдЧрддрд┐рд╡рд┐рдзрд┐ рдХреЛ рдЬреЛрдбрд╝рддреЗ рд╕рдордп рдПрдХ рдбреЗрд╡рд▓рдкрд░ рдиреЗ рдПрдХ рдЧрд▓рддреА рдХреА рдереАред рдПрдХ рдмрд╛рд░ рдЬрдм рдореИрдВрдиреЗ рддрдп рдХрд┐рдпрд╛ рдФрд░ рдкреБрд╖реНрдЯрд┐ рдХреА рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ AppTheme рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рдерд╛ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдкрд╛рда рдХрд╛ рд░рдВрдЧ рдмрджрд▓рдХрд░ рдФрд░ рдЗрд╕реЗ рдРрдк рдореЗрдВ рджреЗрдЦрдХрд░), рддреЛ рдлрд┐рдХреНрд╕ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдмрд╣реБрдд рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж, рдФрд░ рд╡рд╣рд╛рдБ рд╢реБрднрдХрд╛рдордирд╛рдПрдБ!

рдпрд╣ рдПрдХреНрд╕рдкреЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдореЗрд░реЗ рд╕рд╛рде рд╣реЛрддрд╛ рд╣реИред рдореИрдВ рдпрд╣ рдХрдорд╛рдВрдб рдЪрд▓рд╛рддрд╛ рд╣реВрдВред
sudo expo start -c рдФрд░ рдореБрджреНрджрд╛ рдЪрд▓рд╛ рдЧрдпрд╛ рд╣реИред

@ рд╣рдХреАрдорд╕рд╛ рдореЗрд░рд╛ рд╕реБрдЭрд╛рд╡ рд╣реИ рдХрд┐ рдкрд░реАрдХреНрд╖рдг рдШрдЯрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЪрд▓рд╛ рдЧрдпрд╛ рд╣реИред

рдЙрдирдХреА рдЕрдЬреАрдм рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдХреЛрдб рдЙрд╕ рдореБрджреНрджреЗ рдХреЗ рдмрд┐рдирд╛ рдПрдХ рдорд╣реАрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИред рд▓реЗрдХрд┐рди рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдкрд░ рдХреБрдЫ рджреЛрд╣рд░рд╛рдП рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВ рдХрд▓ рдореБрджреНрджреЗ рдореЗрдВ рднрд╛рдЧ рдЧрдпрд╛ ... рд╡реИрд╕реЗ рднреА рдореИрдВ рдЖрдкрдХреЗ рд╕реБрдЭрд╛рд╡ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ @ рдЧреНрд▓реЗрди-рдПрдХреНрд╕рд┐рд╕

рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдпрд╣ рдПрдХ рдлреНрд▓реИрдЯрд▓рд┐рд╕реНрдЯ рдХреЗ рднреАрддрд░ рдЦреБрд╢ рдерд╛ рдЬрдм renderItem <TextInput /> рд░рд┐рдЯрд░реНрди рджреЗрддрд╛ рдерд╛ред рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ <><TextInput /></> рд╡рд╛рдкрд╕ рдХрд░рдХреЗ рдЙрд╕ рдореБрджреНрджреЗ рдХреЛ рд╣рд▓ рдХрд┐рдпрд╛

@MahmoudHemaid рдореБрджреНрджрд╛ рдЗрддрдирд╛ рдХрдард┐рди рд╣реИ рдХрд┐ рдЖрдк рдЗрд╕реЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╣рд▓ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдпрд╣рд╛рдБ ред

android.graphics.drawable.rawable $ Continstate, рдПрдХ рдЕрд╢рдХреНрдд рд╕рдВрджрд░реНрдн рддреНрд░реБрдЯрд┐ рдкрд░ рдирдпрд╛ рд╡рд╛рдкрд╕ рдорд┐рд▓ рд░рд╣рд╛ рд╣реИ, рдЬрдмрдХрд┐ рдореИрдВ рдПрдХ рдЫрд╡рд┐ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдЬреЛ рд╕рдмрд╕реЗ рд╕рд╣реА рдХреЛрдиреЗ рдкрд░ рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИред рдФрд░ рд╡рд╣ рдЫрд╡рд┐ рдЯреЙрдЧрд▓ рдмрдЯрди рдХреА рддрд░рд╣ рдХрд╛рдо рдХрд░ рд░рд╣реА рдереАред рдореИрдВ RN 0.61.2 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдХреБрдЫ рдПрдХ рдХреГрдкрдпрд╛ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдореЗрдВ рдореЗрд░реА рдорджрдж рдХрд░реЗрдВред рдпрд╣ рдХреЗрд╡рд▓ рд╕реНрдЯреИрдВрдбрдЕрд▓реЛрди APK рдореЗрдВ рд╣реЛрддрд╛ рд╣реИ

@ glenn-axsy https://github.com/facebook/react-native/issues/17530#issuecomment -504044357

рдРрд╕рд╛ рдХрд░рддреЗ рд╣реБрдП рдореИрдВрдиреЗ рдкрд╛рдпрд╛ рдХрд┐ рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рд╕реНрдЯрд╛рдЗрд▓ рдореЗрдВ AppTheme рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

<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 рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ ( рдбреЙрдХреНрд╕ ) рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ

image

рдореИрдВ рдЬрд╛рдВрдЪ рдХрд░рддрд╛ рд░рд╣реВрдВрдЧрд╛ред рдзрдиреНрдпрд╡рд╛рдж

рд╣реЗ @ рдЧреНрд▓реЗрди-рдПрдХреНрд╕рд┐рд╕, рдореИрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП рдШрдВрдЯреЛрдВ рд╕реЗ рд╕рдВрдШрд░реНрд╖ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЖрдк рдореЗрд░реА рдорджрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдореИрдВ рдЕрдкрдиреЗ Android рдлреЛрди рдкрд░ рдЕрдкрдиреЗ AndroidTextInputTest рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдореИрдВ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рд╛рде рд░рд┐рдПрдХреНрдЯрд┐рд╡ рдиреЗрдЯрд┐рд╡ рдЪрд▓рд╛ рд░рд╣рд╛ рд╣реВрдВ рдЕрдЧрд░ рд╡рд╣ рдорд╛рдпрдиреЗ рд░рдЦрддрд╛ рд╣реИ рдФрд░ рдПрдХреНрд╕рдкреЛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдРрд╕рд╛ рдХрд░ рд░рд╣рд╛ рд╣реИ рддреЛ рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рдХреЛрдИ рдПрдбрд┐рдЯрдЯреЗрдХреНрд╕реНрдЯ рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╕рд╛рдорд╛рди рдирд╣реАрдВ рд╣реИред
рдкреИрдХреЗрдЬ рдореЗрдВ рдореВрд▓ рдирд┐рд╡рд╛рд╕реАред рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ = "рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓": "^ 0.61.4"

рдореИрдВрдиреЗ рдкрд░рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛:

рдХреЙрдиреНрд╕реНрдЯ рдкрд░рдореНрд╕ = {
рдЕрдВрдбрд░рд▓рд╛рдЗрдирд░реНрд╕: ["рд▓рд╛рд▓", рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд, "рдкрд╛рд░рджрд░реНрд╢реА", "рдЖрд░рдЬреАрдмреАрдП (0, 0, 0, 0)"], // рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░рдВрдЧ
numberOfInputs: 100, // рдПрдХ рд╕рдордп рдореЗрдВ рдХрд┐рддрдиреЗ TextInput рд░реЗрдВрдбрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
focusIntervalMs: 200, // рдЙрдирдХреЗ рдмреАрдЪ рдлрд╝реЛрдХрд╕ рдХреЛ рдХрд┐рддрдиреА рдмрд╛рд░ рдмрджрд▓рдирд╛ рд╣реИ
displayForMs: 3000, // рдЙрдиреНрд╣реЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдм рддрдХ (рдЕрдирд┐рд╢реНрдЪрд┐рдд рдХрд╛рд▓ рдХреЗ рд▓рд┐рдП 0 рдкрд░ рд╕реЗрдЯ)
рджреЗрд░реАрдбрд┐рд╕реНрдкреНрд▓реЗрдлреЛрд░рдореНрд╕: 10, // рдбрд┐рд╕реНрдкреНрд▓реЗ рдХреЗ рдмреАрдЪ рджреЗрд░реА рдХрдм рддрдХ рд╣реЛрддреА рд╣реИ
withScrollView: false, // рдПрдХ рд╕реНрдХреНрд░реЙрд▓ рджреГрд╢реНрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВ
};

рдФрд░ "рд╡рд░реНрдЪреБрдЕрд▓ рд╡рд┐рдзрд┐ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕" рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдореЗрд░рд╛ рдЖрдЙрдЯрдкреБрдЯ рдерд╛:

рдкрд░рд┐рдореЛрдВ рдХреЗ рд╕рд╛рде рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ = {"рдЕрдВрдбрд░рд▓рд╛рдЗрдирд░реНрд╕": ["рд▓рд╛рд▓", рдЕрд╢рдХреНрдд, "рдкрд╛рд░рджрд░реНрд╢реА", "рдЖрд░рдЬреАрдмреАрдП (0, 0, 0, 0)"], "рдирдВрдмрд░рдСрдлрдЗрдирдкреБрдЯреНрд╕": 100, "рдлрд╝реЛрдХрд╕рд╡рд░реНрдерд╡реЗрд▓реНрд╕": 200, "рдбрд┐рд╕реНрдкреНрд▓реЗрдлрд╝реЙрд░реНрдордореНрд╕": 3000, "delayDisplayForMs": 10, "withScrollView": рдЭреВрдареА}
рдХреИрд▓реЗрдгреНрдбрд░рд╡рд┐рд╡рд┐ рдХрд╛ рдкрд░рдо рд╕рддреНрдп рд╣реИ рдФрд░ рд░рд╛рдЬреНрдп рд╕рддреНрдп рд╣реИ
рдкрд░реАрдХреНрд╖рдг рд░реЗрдЦрд╛рдВрдХрд┐рдд рдХрд░рдирд╛ = рд▓рд╛рд▓ рдХрд░рдирд╛
рдкрд░реАрдХреНрд╖рдг рд░реЗрдЦрд╛рдВрдХрд┐рдд рдХрд░рдирд╛ = рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛
рдкрд░реАрдХреНрд╖рдг рдХреЛ рд░реЗрдЦрд╛рдВрдХрд┐рдд рдХрд░рдирд╛ = рдкрд╛рд░рджрд░реНрд╢реА
рдкрд░реАрдХреНрд╖рдг рдХреЛ рд░реЗрдЦрд╛рдВрдХрд┐рдд рдХрд░реЗрдВ = рдЖрд░рдЬреАрдмреАрдП (0, 0, 0, 0)
рдкрд░реАрдХреНрд╖рдг рд░реЗрдЦрд╛рдВрдХрд┐рдд рдХрд░рдирд╛ = рд▓рд╛рд▓ рдХрд░рдирд╛
рдкрд░реАрдХреНрд╖рдг рд░реЗрдЦрд╛рдВрдХрд┐рдд рдХрд░рдирд╛ = рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛
рдкрд░реАрдХреНрд╖рдг рдХреЛ рд░реЗрдЦрд╛рдВрдХрд┐рдд рдХрд░рдирд╛ = рдкрд╛рд░рджрд░реНрд╢реА

рддреЛ рдпрд╣рд╛рдБ рд╕реЗ рдореЗрд░рд╛ рд╕рд╡рд╛рд▓ рдпрд╣ рд╣реИ рдХрд┐ рдореИрдВ рджреБрд░реНрдШрдЯрдирд╛ рд╕реЗ рдкрд╣рд▓реЗ рдЗрди рдкреИрд░рд╛рдореЗрдЯреНрд╕ рдФрд░ рдЖрдЙрдЯрдкреБрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ, рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдореЗрд░реЗ рдРрдк рдореЗрдВ рдХреНрдпрд╛ рдЧрд▓рдд рд╣реИ?

рдХрд┐рд╕реА рднреА рдорджрдж рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

@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 рдореИрдВ рдЙрд▓рдЭрди рдореЗрдВ рд╣реВрдБ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЗрд╢реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдБ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЕрдкрдиреЗ рдХреЛрдб рдореЗрдВ рдХрд╣реАрдВ рднреА рдЖрдЗрдЯрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ред

рдореИрдВ рдПрдХ TextInput рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ рдЬреЛ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:

рдкрд╛рда рдЗрдирдкреБрдЯ
рд░реЗрдлрд░реА = {} рдХреБрдВрдЬреА
рдХреБрдВрдЬреА = {} рдХреБрдВрдЬреА
рдкреНрд▓реЗрд╕рд╣реЛрд▓реНрдбрд░ = {} рдХреБрдВрдЬреА
underlineColorAndroid = {} underlineColor
рд╢реИрд▓реА = {} styles.textInput

рдзрдиреНрдпрд╡рд╛рдж

@ucheNkadiCode
image
рд▓реЗрдХрд┐рди рдПрдХреНрд╕рдкреЛ рдХреЗ рд▓рд┐рдП рд╢рд╛рдпрдж рдЖрдкрдХреЛ рдЗрд╕ рддрд░рд╣ рдХреА рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд╛рд▓рдирд╛ рд╣реЛрдЧрд╛

@ucheNkadiCode
image
рд▓реЗрдХрд┐рди рдПрдХреНрд╕рдкреЛ рдХреЗ рд▓рд┐рдП рд╢рд╛рдпрдж рдЖрдкрдХреЛ рдЗрд╕ рддрд░рд╣ рдХреА рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд╛рд▓рдирд╛ рд╣реЛрдЧрд╛

рд╣рд╛рдБ, рдпрд╣ рдореБрджреНрджрд╛ рд╕рд╣реА рд╣реЛрдЧрд╛ред рдореИрдВ рдЕрдкрдиреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЗрд╢реА рдРрдк рдХреЛ рдЦрд╛рд░рд┐рдЬ рдХрд░рдиреЗ рдХреА рдХреАрдордд рдХрд╛ рднреБрдЧрддрд╛рди рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ред рдореИрдВ рдПрдХ рд╕рдорд╛рдзрд╛рди рдЦреЛрдЬрдиреЗ рдХреА рдЙрдореНрдореАрдж рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдЬреЛ рдореБрдЭреЗ рд░рд┐рдПрдХреНрдЯ рдиреЗрдЯрд┐рд╡ рдореЗрдВ рд░рдЦрддрд╛ рд╣реИред

рдЖрдкрдХреА рд╕рд╣рд╛рдпрддрд╛ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж

@ axsy-dev @ucheNkadiCode

рдореЗрд░реА рдЯрд┐рдкреНрдкрдгреА рдЙрд╕ рджрд┐рд╢рд╛ рдореЗрдВ рдХрд╛рдо рдХрд░ рд░рд╣реА рдереА, рддрд╛рдХрд┐ TextInput рдкреНрд░реЛрдк underlineColorAndroid рдЬреБрдбрд╝реЗ рдореБрджреНрджреЛрдВ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреБрд▓ рдЕрдиреБрд░реЛрдз рдореЗрдВ рдЗрд╕реЗ рдареАрдХ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред ReactNative рдПрдХ рдереАрдореЗрдЯрд┐рдХ рддрд░реАрдХреЗ рд╕реЗ рдереАрдо рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ ... рдХреГрдкрдпрд╛ рдореЗрд░реА рдЯрд┐рдкреНрдкрдгреА рдХреА рд╕рдореАрдХреНрд╖рд╛ рдХрд░реЗрдВ рдФрд░ рдХреБрдЫ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд╕рд╛рде рдореЗрд░реЗ рдкрд╛рд╕ рд╡рд╛рдкрд╕ рдЖрдПрдВ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд╣рд▓ рдирд╣реАрдВ рдХрд░ рд╕рдХрд╛ рдФрд░ рдореИрдВ рдЕрднреА рдЕрдиреНрдп рдкреБрд▓ рдЕрдиреБрд░реЛрдз рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдзрдиреНрдпрд╡рд╛рдж

рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореВрд▓ ReactTextInput рдкрджреНрдзрддрд┐ рдХрд╛ рдкреБрдирд░реНрд▓реЗрдЦрди рдХрд░рдХреЗ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛

<strong i="12">@Override</strong>
 protected EditText createDummyEditText() {
   return new EditText(getThemedContext(), null, 0);
 }

рд▓реЗрдХрд┐рди рдпрд╣ рд╕рд┐рд░реНрдл getThemedContext() рд╕рд╛рде EditText рдШрдЯрдХ рдХреЛ рджреА рдЧрдИ рд╢реИрд▓реА рдХреЛ рдЕрдХреНрд╖рдо рдХрд░ рд░рд╣рд╛ рд╣реИ

рдЗрд╕рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реНрдЯреИрдХ рд╣рдореЗрдВ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рддреНрд░реБрдЯрд┐ ReactEditText.onTouchEvent , рдЗрд╕рд▓рд┐рдП рдЬрдм рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ TextInput рдШрдЯрдХ рдХреЛ рд╕реНрдкрд░реНрд╢ рдХрд░рддрд╛ рд╣реИред

рдореЗрд░реА рдЯрд┐рдкреНрдкрдгреА рдЙрд╕ рджрд┐рд╢рд╛ рдореЗрдВ рдХрд╛рдо рдХрд░ рд░рд╣реА рдереА, рддрд╛рдХрд┐ TextInput рдкреНрд░реЛрдк underlineColorAndroid рдЬреБрдбрд╝реЗ рдореБрджреНрджреЛрдВ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреБрд▓ рдЕрдиреБрд░реЛрдз рдореЗрдВ рдЗрд╕реЗ рдареАрдХ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред ReactNative рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдореЗрдЯрд┐рдХ рддрд░реАрдХреЗ рд╕реЗ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ ... рдХреГрдкрдпрд╛ рдореЗрд░реА рдЯрд┐рдкреНрдкрдгреА рдХреА рд╕рдореАрдХреНрд╖рд╛ рдХрд░реЗрдВ рдФрд░ рдХреБрдЫ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд╕рд╛рде рдореЗрд░реЗ рдкрд╛рд╕ рд╡рд╛рдкрд╕ рдЖрдПрдВ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд╣рд▓ рдирд╣реАрдВ рдХрд░ рд╕рдХрд╛ рдФрд░ рдореИрдВ рдЕрдм рдЕрдиреНрдп рдкреБрд░реНрдирдЧрдарди рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдВред

рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореВрд▓ ReactTextInput рдкрджреНрдзрддрд┐ рдХрд╛ рдкреБрдирд░реНрд▓реЗрдЦрди рдХрд░рдХреЗ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛

<strong i="12">@Override</strong>
 protected EditText createDummyEditText() {
   return new EditText(getThemedContext(), null, 0);
 }

рд▓реЗрдХрд┐рди рдпрд╣ рд╕рд┐рд░реНрдл getThemedContext() рд╕рд╛рде EditText рдШрдЯрдХ рдХреЛ рджреА рдЧрдИ рд╢реИрд▓реА рдХреЛ рдЕрдХреНрд╖рдо рдХрд░ рд░рд╣рд╛ рд╣реИ

рдЗрд╕рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реНрдЯреИрдХ рд╣рдореЗрдВ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рддреНрд░реБрдЯрд┐ ReactEditText.onTouchEvent , рдЗрд╕рд▓рд┐рдП рдЬрдм рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ TextInput рдШрдЯрдХ рдХреЛ рд╕реНрдкрд░реНрд╢ рдХрд░рддрд╛ рд╣реИред

@ axsy-dev @ fabriziobertoglio1987 рдЗрд╕рд▓рд┐рдП рдореЗрд░реЗ рдкрд╛рд╕ рдХреЛрдИ рднреА рддрддреНрд╡ рдирд╣реАрдВ рд╣реИ рдЬреЛ рдореИрдВ рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ ReactEditText рдХреЗ рд╕рд╛рде рдкрд╛ рд╕рдХрддрд╛ рд╣реВрдВ рдФрд░ рдореЗрд░реА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдХреЛрдИ рднреА .java рдлрд╛рдЗрд▓реЗрдВ рдирд╣реАрдВ рд╣реИрдВред рдореИрдВ React рджреЗрд╢реА рдХреЗ рд╕рд╛рде рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдореЗрд░реА рдЕрдзрд┐рдХрд╛рдВрд╢ рдлрд╛рдЗрд▓реЗрдВ .tsx рдпрд╛ .ts рдХреЗ рд╕рд╛рде рдмрд╣реБрдд рд╕рд╛рд░реЗ node_ododules рдХреЗ рдЕрдкрд╡рд╛рдж рдХреЗ рд╕рд╛рде рд╣реИрдВред

рдореИрдВ рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рдореВрд▓ рдирд┐рд╡рд╛рд╕реА Android рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред

@ucheNkadiCode рдЗрд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдм рдЖрдкрдХреЛ рдмреЗрджрдЦрд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЕрдиреНрдпрдерд╛ рдЗрд╕ рдкрд░рд┐рджреГрд╢реНрдп рдХреЛ рдкреБрди: рд╕рдХреНрд░рд┐рдп рдореЗрдВ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдПрдБ, рдПрдХ рдкреБрд▓ рдЕрдиреБрд░реЛрдз рд▓рд┐рдЦреЗрдВ, рдпрд╣ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓ рдореЗрдВ рд╡рд┐рд▓рдп рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдлрд┐рд░ рдмрд╛рдж рдореЗрдВ рдПрдХреНрд╕рдкреЛред

@ucheNkadiCode рдореБрдЭреЗ рдбрд░ рд╣реИ рдХрд┐ рдореИрдВ рдПрдХреНрд╕рдкреЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ @sunnylqm рдХреЛ рдкрддрд╛ рд╣реИ рдХрд┐ рд╡рд╣ рдХрд┐рд╕ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣рд╛ рд╣реИ

рдореБрдЭреЗ рдПрдХреНрд╕рдкреЛ рдореЗрдВ рдмрд╕ рдЗрд╕реА рдореБрджреНрджреЗ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ред
рдореИрдВрдиреЗ рдХреЛрд╢рд┐рд╢ рдХреА: рдЪреМрдХреАрджрд╛рд░ рд╡реЙрдЪ-рдбреЗрд▓-рдСрд▓ && рдПрдХреНрд╕рдкреЛ рдЖрд░-рд╕реА
рд▓реЗрдХрд┐рди рдЕрднреА рднреА рдЕрдЪреНрдЫреА рдЦрдмрд░ рд╣реИред

рдореИрдВ рдЙрд╕реА рдореБрджреНрджреЗ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдЬреЛ рдЧрд╛рдпрдм рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдЕрдЧрд░ рдореИрдВ рдЕрдкрдиреЗ TextInput рдХреЛ рдПрдХ рдкрд╛рда рдореЗрдВ рдмрджрд▓рддрд╛ рд╣реВрдВред

2 рд╕рд╛рд▓ рдкрд╣рд▓реЗ рдХреА рдпрд╣ рдЯрд┐рдкреНрдкрдгреА рдЕрднреА рднреА рдорд╛рдиреНрдп рд╣реИред

рдореИрдВрдиреЗ рдЗрд╕реЗ рдПрдХ рдлреНрд▓реИрдЯрд┐рд╕реНрдЯ рдореЗрдВ <TextInput> рд╕реАрдорд┐рдд рдХрд┐рдпрд╛ рд╣реИред рдЬрдм рдореИрдВ рдЗрд╕реЗ <Text> рд╕рд╛рде рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рд╕рдорд╕реНрдпрд╛ рдЧрд╛рдпрдм рд╣реЛ рдЬрд╛рддреА рд╣реИред

рдХреИрд╢ рдХреЛ рд░реАрд╕реЗрдЯ рдХрд░рдиреЗ рд╕реЗ рдХреБрдЫ рд╕рдордп рдХреЗ рд▓рд┐рдП рдорджрдж рдорд┐рд▓рддреА рд╣реИ, рд▓реЗрдХрд┐рди рдХреБрдЫ рдмрдЯрди рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдореЗрд░рд╛ рдРрдк рдлрд┐рд░ рд╕реЗ рдХреНрд░реИрд╢ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред

рдореЗрд░реЗ рдкрд░реАрдХреНрд╖рдг рдШрдЯрдХ рдХреЗ рд╕рд╛рде @diegoboston рдкрд░реАрдХреНрд╖рдг рдЖрдк FlatList рдХреЗ рдмрд┐рдирд╛ рдЗрд╕реЗ рдкреБрди: рдкреЗрд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЖрдк рдкрд░реАрдХреНрд╖рдг рдШрдЯрдХ рдФрд░ рдПрдХ рд╕рдорд╛рдзрд╛рди / рдореЗрд░реА рдЯрд┐рдкреНрдкрдгреА рдореЗрдВ рд╕рдорд╛рдзрд╛рди рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╣рд╛рдБ ред

рдореИрдВ рдПрдХреНрд╕рдкреЛ рдПрд╕рдбреАрдХреЗ 37 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдЬреЛ рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ 0.61 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред
рдпрд╣ рдЕрдЬреАрдм рд╣реИ рдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рдХреЛрдИ рдореБрджреНрджрд╛ рдирд╣реАрдВ рдерд╛, рд▓реЗрдХрд┐рди рдЕрдЪрд╛рдирдХ рдЬрдм рдореИрдВрдиреЗ рдмрд┐рд▓реНрдбрд░ рдХреЛ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд┐рдпрд╛, рддреЛ рдпрд╣ рдореБрджреНрджрд╛ рдкреЙрдк рд╣реЛ рдЧрдпрд╛ред рдХреНрдпрд╛ рдпрд╣ рдЕрднреА рддрдХ рддрдп рдирд╣реАрдВ рд╣реИ?

RN 0.62.2 + Android рдпрд╣рд╛рдБред
рдпрд╣ рддреНрд░реБрдЯрд┐ рдЙрддреНрдкрд╛рджрди рдореЛрдб рдореЗрдВ рд╣реИред

image

рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рд╕реЗ рдРрдк рдХреИрд╢ рд╕рд╛рдлрд╝ рдХрд░рдиреЗ рд╕реЗ рдореЗрд░реА рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рд╣реЛ рдЧрдИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЗрд╕рдХреЗ рд▓рд┐рдП рд╕реНрд╡реАрдХрд╛рд░реНрдп рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд▓рдЧрддрд╛ рд╣реИред

рдореИрдВрдиреЗ рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдХрд╛рдо рдХрд┐рдпрд╛ рдФрд░ рдпрд╣ рдореЗрд░реЗ рдирд┐рд╖реНрдХрд░реНрд╖ рд╣реИрдВ (рдкрд┐рдЫрд▓реА рдкреЛрд╕реНрдЯ рдпрд╣рд╛рдБ рд╣реИ )ред

1) рд╣рдо рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ android:editTextBackground color/transparent рдереАрдо рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рд╕рдорд╕реНрдпрд╛ рдареАрдХ рд╣реЛ рдЬрд╛рддреА рд╣реИ

<item name="android:editTextBackground"><strong i="10">@android</strong>:color/transparent</item>

2) ReactEditTextShadowNode рдкрджреНрдзрддрд┐ createDummyEditText рдиреАрдЪреЗ рдХреЛрдб рдореЗрдВ рднреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рдХрд░рддрд╛ рд╣реИ (рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ EditText рдХреЗ рд▓рд┐рдП рд╕рднреА рд╕реНрдЯрд╛рдЗрд▓ рдХреЛ рдЕрдХреНрд╖рдо рдХрд░реЗрдВ)

<strong i="16">@Override</strong>
 protected EditText createDummyEditText() {
   return new EditText(getThemedContext(), null, 0);
 }

рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдореЗрд░реА рд╕рдордЭ рдЕрдм рдпрд╣ рд╣реИ рдХрд┐ рдПрдВрдбреНрд░реЙрдЗрдб рдореЗрдВ рдЖрдк рджреЛ рддрд░реАрдХреЛрдВ рд╕реЗ рд╢реИрд▓рд┐рдпреЛрдВ рдХреЛ рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ

1) XML рдХреЛ html рддрддреНрд╡реЛрдВ рдФрд░ рд╢реИрд▓рд┐рдпреЛрдВ рдХреА рддрд░рд╣ рд▓рд┐рдЦрдирд╛ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд▓рд╛рдЧреВ рдХрд░рдирд╛
2) EditText рдпрд╛ View рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЛ рдмреБрд▓рд╛рдПрдВ рдФрд░ рдЗрд╕рдХреЗ рд╕рд╛рде рд╕рдВрджрд░реНрдн рдФрд░ рдЕрдиреНрдп рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ / рд╢реИрд▓рд┐рдпреЛрдВ рдХреЛ рдкрд╛рд╕ рдХрд░реЗрдВред

ReactEditText createDummyEditText EditText рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдлрд┐рд░ рдХреБрдЫ рд╢реИрд▓рд┐рдпреЛрдВ (рдкреИрдбрд┐рдВрдЧ, рд▓реЗрдЖрдЙрдЯ ..etc) рдХреЛ рдмрджрд▓ рджреЗрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд▓реЗрдЖрдЙрдЯ (рдкреИрдбрд┐рдВрдЧ, рдорд╛рд░реНрдЬрд┐рди) рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдХреБрдЫ рд╣реИред рдкреГрд╖реНрдарднреВрдорд┐ рд░рдВрдЧ рдЖрджрд┐ рдирд╣реАрдВ .. рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореИрдВрдиреЗ рдХреЛрдб рдХреА рдЙрди рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ setBackgroundTint рд╕реЗ red рдпрд╛ transparent рдмрджрд▓рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдФрд░ рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ ...

https://github.com/facebook/react-native/blob/95546d932f03f9af990c2a11576a4c6297136fd4/ReactAndroid/mrc/main/java/com/facebook/react/views/textinput/putctext.put ред

рдкреГрд╖реНрдарднреВрдорд┐ рдХрд╛ рд░рдВрдЧ рдирд┐рдореНрди рд╡рд┐рдзрд┐ рд╕реЗ рдмрджрд▓рд╛ рдЧрдпрд╛ рд╣реИ

https://github.com/facebook/react-native/blob/95546d932f03f9af990c2a11576a4c6297136fd4/ReactAndroid/mrc/main/java/com/facebook/react/views/view/ReactiveBackViewerBragerman

рд╕реЛрдорд╡рд╛рд░ рдХреЛ рдореИрдВ 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>

рдЗрд╕ рдХрд╛рд░рдг рд╕реЗ рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдЗрд╕ рд╕рдорд╛рдзрд╛рди рдХреЛ рдЦреЛрдЬрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдХреИрд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕рдВрджрд░реНрдн рдХреЛ

рдкреИрдХреЗрдЯ рдХреЛ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд░рдиреЗ рдФрд░ рдХреИрд╢ рд╕рд╛рдлрд╝ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рджреЛрд╕реНрддреЛрдВ рдиреЗ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд┐рдпрд╛!

рд▓реЗрдХрд┐рди рдпрд╣ рдЕрд╕реНрдерд╛рдпреА рд╕рдорд╛рдзрд╛рди рд╣реИ рдХрд┐ рдореИрдВ рдЗрд╕ рд╕реНрдерд╛рдпреА рдХреЛ рдХреИрд╕реЗ рдареАрдХ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ?

рдореИрдВрдиреЗ рдкреГрд╖реНрдарднреВрдорд┐ рдореЗрдВ рдкрд╛рд░рджрд░реНрд╢реА рд░реВрдк рд╕реЗ рдЬрд╛рд╡рд╛ рдореЗрдВ рдкреНрд░реЛрдЧреНрд░рд╛рдореЗрдЯрд┐рдХ рд░реВрдк рд╕реЗ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рд░рдирдЯрд╛рдЗрдо рддреНрд░реБрдЯрд┐ рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдореБрдЭреЗ рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдХреЛрдб рдкрд░ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдХрд░рддрд╛ рд╣реИ

<item name="android:editTextBackground"><strong i="6">@android</strong>:color/transparent</item>

рд╕рд┐рд░реНрдл рдУрд╡рд░-рд░рд╛рдЗрдбрд┐рдВрдЧ рд▓реЙрдЬрд┐рдХ рд╣реИ

https://github.com/facebook/react-native/blob/9312313c3c6701490d728f912e0b0bbd16d91ad9/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputhadhadhadhadhappar.com/hindi

рдЬреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╕реНрдЯреИрдХ рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдХрд╛рд░рдг рд╣реИ

рдпрд╣ рд╡рд┐рдзрд┐ 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.rawable $ ConstantState .newDrawable (android.content.res.Resources)' рдХреЛ рдПрдХ рдЕрд╢рдХреНрдд рд╡рд╕реНрддреБ рд╕рдВрджрд░реНрдн рдореЗрдВ Android рдкрд░ рдПрдХ рд╢реВрдиреНрдп рд╡рд╕реНрддреБ рд╕рдВрджрд░реНрдн рдореЗрдВ рд▓рд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред рдПрдВрдбреНрд░реЙрдЗрдб рдкрд░ред : 433) android.graphics.drawable.InsetDrawable.getOpacity (InsetDrawable.java:258) рдкрд░ android.view.View.computeOpaqueFlags (View.java .16791) рдкрд░ android.view.View.setBackgroundDrawable (View.java:171010) рджреЗрдЦреЗрдВред android.view.View.set.ackBackground (View.java:21603) android.view.View рдкрд░ рджреЗрдЦреЗрдВред(View.java:5547) android.widget.TextView рдкрд░ред(TextView.java:1135) android.widget.EditText рдкрд░ред(EditText.java:107) android.widget.EditText рдкрд░ред(EditText.java:103) android.widget.EditText рдкрд░ред(EditText.java:99) android.widget.EditText рдкрд░ред(EditText.java:95) рдкрд░ com.facebook.react.views.textinput.ReactEditTextред(ReactEditText.java:92) com.facebook.react.views.textinput.ReactTextInputManager.createViewInstance (ReactTextInputManager.java .94) рдкрд░ com.facebook.rea.views.views.textinput.ReactTextInputmanput.putman.putm.put. com.facebook.react.uimanager.ViewManager.createView (viewManager.java:46) com.facebook.react.uimanager.NativeViewHierarchyManager.createView рдкрд░ рджреЗрдЦреЗрдВред (NativeViewHierarchyManager.java:218) com.facebook.react.uimanager.Uimanager.Uimanager рдкрд░ред com.facebook.react.uctager.uimanager.UIViewOperationQueue $ compfaceUIFrameCallback.dispectPendingBonBatchedOperations (UIViewOperationQueue.java.com рд╕реЗ рдХреЙрдо, .face.com.face.com рдкрд░ рдкреНрд░рд╕реНтАНрддрд╛рд╡рд┐рдд рдХрд░реЗрдВ) рд╣реИред com.facebook.react.uctager.GuardedFrameCallback.doFrame (GuardedFrameCallback.java:31) рдкрд░ com.facebook.react.modules.core.eactChoreographer $ ReactChoreographerDispatcher.doFrame (рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдЪрд┐рд╣реНрди) rapher.java:136) com.facebook.react.modules.core.ChoreographerCompat $ рдлреНрд░реЗрдордХреЙрд▓рдмреИрдХ $ 1.doFrame (ChoreographerCompat.java:107) рдкрд░ android.view.Choreographer $ CallbackRecord.run (Choreographer.java:909) Android рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИред view.Choreographer.doCallbacks (Choreographer.java:723) android.view.Choreographer.doFrame (рдХреЛрд░рд┐рдпреЛрдЧреНрд░рд╛рдлрд░.рдЬрд╛рд╡рд╛:655) рдкрд░ android.view.Choreographer $ FrameDisplayEventReceiver.run (рдХреЛрд░рд┐рдпреЛрдЧреНрд░рд╛рдлрд░.рдЬреЗ.рдУ.рд╡реА.) .handleCallback (Handler.java:789) android.os.Handler.dispatchMessage (Handler.java:98) рдкрд░ android.os.Looper.loop (Looper.java:164) android.app.ActivityThread.main (ActivThread) рдкрд░ред java: 6938) рдкрд░ java.lang.reflect.Method.invoke (Method.java) рдкрд░ com.android.internal.os.Zygote $ MethodAndArgsCaller.run (Zggote.java:327) com.android.internal.os.ZygoteInit рдкрд░ред рдореБрдЦреНрдп (ZygoteInit.java:1374)

рджреВрд╕рд░реА рддрд░рдл рдореИрдВ рдЦреБрдж рд╕реЗ рдкреВрдЫрддрд╛ рд╣реВрдВ рдХрд┐ рдХреНрдпрд╛ 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 рдЖрдкрдиреЗ рдХрднреА рдЗрд╕ рддреНрд░реБрдЯрд┐ рдХреЛ рдирд╣реАрдВ рджреЗрдЦрд╛ рд╣реИ

рдореВрд▓ рдЯрд┐рдкреНрдкрдгреА рдПрдирд╛рд▓рд┐рдЯрд┐рдХреНрд╕ рдмрдЧ рд░рд┐рдкреЛрд░реНрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдПрдХ рд╕рдорд╕реНрдпрд╛ рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рддреА рд╣реИ, рдФрд░ рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рд╣реИ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рд░рд╣рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдЖрдк рджреЛрдиреЛрдВ рдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рднреА рдПрдХ рдмрд┐рдВрджреБ рдХреЛ рдЖрдЬрд╝рдорд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рднреА рдЖрдкрдХреЗ рдРрдк рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ:

  1. рдЕрдкрдиреЗ рдРрдк рдХрд╛ рдХреИрд╢ рдбреЗрдЯрд╛ рд╣рдЯрд╛рдПрдВ рдФрд░ рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рд▓реЛрдб рдХрд░реЗрдВ
  2. Npm start --reset-cache рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рд░реНрд╡рд░ рдХреЛ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░реЗрдВ

https://github.com/facebook/react-native/pull/24183 рдореИрдВ рдЗрд╕реЗ рдПрдХ рдмрд╛рд░ рдбреАрдмрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддрд╛ рд╣реВрдВред

https://github.com/facebook/react-native/blob/9f699ae1855252397a516333a35a5e6aff74b89b/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputManager.java#L537

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ Android рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкрд░ рд╕рдВрдмрдВрдзрд┐рдд рд╕рдорд╕реНрдпрд╛ https://issuetracker.google.com/issues/37068452 рд╣реИ

  1. рдПрдХ рдХрд╕реНрдЯрдо рдбреНрд░рд╛рдПрдмрд▓ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдмрдирд╛рдПрдВ рдЬреЛ getConstantState () рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
  2. рдПрдХ LayerDrawable рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдПрдВ, рдЬрд┐рд╕рдореЗрдВ рдмрдЪреНрдЪреЗ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╕реНрдЯрдо рдбреНрд░реЙрдмрд▓ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИред
  3. 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/blob/6ffb983f83afdee5d9290c683c5060d2a959818d/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewManager.java#L83

https://github.com/facebook/react-native/blob/6ffb983f83afdee5d9290c683c5060d2a959818d/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputManager.java#L126

https://github.com/facebook/react-native/blob/6ffb983f83afdee5d9290c683c5060d2a959818d/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactEditText.java#L111

https://github.com/facebook/react-native/issues/17530#issuecomment -61513107

<TextInput style={styles.input} /> , рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд░рдирдЯрд╛рдЗрдо рд╕реЗ рдПрдВрдбреНрд░реЙрдЗрдб рдХреЗ рд▓рд┐рдП JSON рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд░реВрдк рдореЗрдВ Jct рдХреЛ ReactNativeBridge рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рднреЗрдЬреЗрдВрдЧреЗ, рдПрдВрдбреНрд░реЙрдЗрдб рдЬрд╛рд╡рд╛ рдПрдкреАрдЖрдИ рдЬрд╛рдирдХрд╛рд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ View рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░реЗрдЧрд╛ рдФрд░ рдЗрд╕реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд (рдкреНрд░рджрд░реНрд╢рд┐рдд) рдХрд░реЗрдЧрд╛ред

рдпрд╣ Context рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ View рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд░рд┐рдд рдХрд░реЗрдЧрд╛ рдЬреЛ рдЙрд╕ <TextInput /> рд▓рд┐рдП рдмрд╣реБрдЖрдпрд╛рдореА рд▓реЗрдЖрдЙрдЯ рдХреЛ рдмрдврд╝рд╛рдПрдЧрд╛, рдлрд┐рд░ рдХрднреА рднреА рд╣рдо underlineColorAndroid рдЬреИрд╕реЗ рдПрдХ рдкреНрд░рд╕реНрддрд╛рд╡ рдХреЛ рдмрджрд▓ рджреЗрдВрдЧреЗ, рд╣рдо рдкреВрд░реНрд╡ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ Android API рд╡рд┐рдзрд┐ рдХреЙрд▓ рдХрд░реЗрдЧрд╛ред setUnderlineColorAndroid("red") рдФрд░ Android API <TextInput /> рд░реЗрдЦрд╛рдВрдХрд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд░рдВрдЧ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХрд╛ рдзреНрдпрд╛рди рд░рдЦреЗрдЧрд╛ред

image

рдЕрдЧрд░ 37068452 рдХреНрд░рдо рдЦрдбрд╝реА рдХрд░ рд░рд╣рд╛ рд╣реИ, рддреЛ рд╣рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП mutating() рдПрдХ BackgroundDrawable рд╢рд╛рдпрдж рдмрджрд▓рдХрд░ underlineColor , рд▓реЗрдХрд┐рди рдЧрд▓рддреА рд╕реЗ рд╢реБрд░реВ рд╣реЛ рд░рд╣рд╛ рд╣реИ View рдирд┐рд░реНрдорд╛рддрд╛ рдЬрдм рд╣рдо Context ред

рдореИрдВ рдПрдВрдбреНрд░реЙрдЗрдб рд╕реНрдЯреИрдХ рдХреЛ рдбреАрдмрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реВрдВрдЧрд╛, рд▓реЗрдХрд┐рди рдкрд╣рд▓реЗ рдореИрдВ рд╡рд░реНрддрдорд╛рди рдЙрджрд╛рд╣рд░рдг рдХреЛ рдиреНрдпреВрдирддрдо рд░рд┐рдкреНрд░реЛрдбреНрдпреВрд╕рд┐рдпрд▓ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдмрджрд▓рдиреЗ рдФрд░ рдХрд┐рд╕реА рднреА рдЧреБрдг рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ рдЬреЛ рдмрдЧ рдХреЛ рдкреБрди: рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИред

рдореИрдВ рдПрдХ рдорд┐рдирд┐рдордо рд░рд┐рдкреНрд░реЛрдбреНрдпреВрд╕рд┐рдпрд▓ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛ред
рд╕рдорд╕реНрдпрд╛ 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;

рдЗрд╕реА рдореБрджреНрджреЗ рдХреЛ рдПрдХ рдлреНрд▓реИрдЯрд▓рд┐рд╕реНрдЯ рдХреЗ рд╕рд╛рде рдкреБрди: рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдпрджрд┐ рдЖрдкрдХреЗ data рдкреНрд░реЛрдк рдореЗрдВ key , index рдпрд╛ id рдЬреИрд╕реЗ [{ key: "1"}, {key: "2"}, .. {key: "5000"}] ; рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ key рдЖрдкрдХреА рд╕реВрдЪреА рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рд░рдирдЯрд╛рдЗрдо рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИред data рд╕рд░рдгреА рд╕реЗ рдЙрди рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЛ рд╣рдЯрд╛рдиреЗ рд╕реЗ рддреНрд░реБрдЯрд┐ рдареАрдХ рд╣реЛ рдЬрд╛рддреА рд╣реИ рдФрд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХреИрд╢рд┐рдВрдЧ рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

https://github.com/facebook/react-native/blob/980900c6343b93259e46edd44b6f267aa534cde5/Lbooks/Lists/FlatList-js#L122 -L123

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; рд╕рд╛рде рдмрджрд▓ рджрд┐рдпрд╛ рдФрд░ рддреНрд░реБрдЯрд┐ рдкреБрди: рдЙрддреНрдкрдиреНрди рдирд╣реАрдВ рд╣реЛрдЧреАред

https://github.com/facebook/react-native/blob/980900c6343b93259e46edd44b6f267aa534cde5/books /Lists/Lirtualizedistist.js#L802 -L802

рдПрдХ рдЙрджрд╛рд╣рд░рдг keyExtractor(item, ii) item = {"key":"450"} , ii = 50 рдФрд░ рд╡рд╛рдкрд╕реА рдореВрд▓реНрдп key = 450 рдХреЗ рд╕рд╛рде рджреБрд░реНрдШрдЯрдирд╛ рдХрд╛ рдХрд╛рд░рдг рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдпрд╣ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдХрд╛рд░рдг рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рд┐рд░реНрдл рд╕рдВрдХреЗрдд рд╣реИ рдХрд┐ рдХреБрдВрдЬреА рд╕рдорд╕реНрдпрд╛ рдкреИрджрд╛ рдХрд░ рд░рд╣реА рд╣реИред рдореИрдВ рдЗрд╕реЗ рджреЗрдЦрддрд╛ рд░рд╣реВрдВрдЧрд╛ред рдореИ рдиреМрдХрд░реА рдвреВрдВрдв рд░рд╣рд╛ рд╣реВрдБред рдмрд╣реБрдд рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рджред рдореИ рддреБрдореНрд╣реЗрдВ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╕рдкреНрддрд╛рд╣рд╛рдВрдд рдХреА рд╢реБрднрдХрд╛рдордирд╛ рджреЗрддрд╛ рд╣реВрдБред

| RUNTIME рдХреЗ тАЛтАЛрд╕рд╛рде |
|: -------------------------: |
| |

| RUNTIME рдХреЗ тАЛтАЛрдмрд┐рдирд╛ |
|: -------------------------: |
| |

@ fabriziobertoglio1987 рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рд╕рдорд╛рди рдирд┐рд╖реНрдХрд░реНрд╖ рд╣реИ https://github.com/facebook/react-native/issues/17530#issuecomment -573934341, рдЬреЛ рдХрд┐рд╕реА рдПрдбрд┐рдЯрдЯреЗрдХреНрд╕реНрдЯ рдХреЛ рд░рд┐рдорд╛рдЗрдВрдб / рддрддреНрдХрд╛рд▓ рдХрд░рдиреЗ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИред рдЙрд╕ рд╕рдордп рдореБрдЭреЗ рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрдпрд╛ рдХрд┐ рдЬрдм рдХреЛрдИ рдХрд╛рд░рдг рдирд╣реАрдВ рд▓рдЧрддрд╛ рдерд╛, рддреЛ рдЯреЗрдХреНрд╕реНрдЯрд┐рдирдкреБрдЯ рдкреБрдирдГ рдмрдирд╛рдПрдВрдЧреЗ / рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдПрдВрдЧреЗред рдЕрдм рдпрд╣ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЪрд╛рдмрд┐рдпрд╛рдБ рдЗрд╕рдХрд╛ рдХрд╛рд░рдг рд╣реЛ рд╕рдХрддреА рд╣реИрдВред

рддреНрд░реБрдЯрд┐ рдпрд╣рд╛рдБ рд╕реЗ рдлреЗрдВрдХрддрд╛ рд╣реИ

https://github.com/aosp-mirror/platform_frameworks_base/blob/53a9ccaa926945149b4546c67b50ce1ae88ba777/graphics/java/android/graphics/drawable/DrawableContainer.java#L875

рдЬрд╣рд╛рдБ рд╕рд░рдгреА mDrawableFutures рд╢реВрдиреНрдп рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рдХреБрдЫ рдмрд╛рд▓ рддрддреНрд╡ рд╢реВрдиреНрдп рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред

mDrawableFutures рдХреЗрд╡рд▓ рджреВрд╕рд░реЛрдВ рд╕реЗ рдХреНрд▓реЛрди рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ

https://github.com/aosp-mirror/platform_frameworks_base/blob/8857e6b645f9b91f44c8ea0ab8f441c9d0d63b6/graphics/java/android/graphics/drawable/DrawableContainer.java####

рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдпрд╣ рдЧреИрд░-рд╢реВрдиреНрдп рдерд╛ рдЬрдм рдЗрд╕реЗ рдХреНрд▓реЛрди рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рдерд╛ рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рддрд░рд╣ рдЗрд╕рдХреЗ рдХреБрдЫ рдмрд╛рд▓ рддрддреНрд╡ рдирд╖реНрдЯ рд╣реЛ рдЧрдПред
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдореЗрд░рд╛ рдЕрдиреБрдорд╛рди рд╣реИ: рдкреНрд░рдореБрдЦ рд╕рд╣рд╛рд░рд╛ рдПрдХ рдЕрд▓рдЧ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд░реЗрдВрдЧреЗ, рдЬреЛ рдХрд┐ рдЯреЗрдХреНрд╕реНрдЯрд┐рдирдкреБрдЯ рдХреЗ рд▓рд┐рдП рдЫрд╛рдпрд╛ рдиреЛрдб рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░реЗрдЧрд╛ред рдФрд░ рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рджреМрд░рд╛рди рдбреНрд░реЙрдмрд▓ рд╕реНрдЯреЗрдЯреНрд╕ рдХреНрд▓реЛрди рд╣реЛ рдЬрд╛рддреЗ рдереЗред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдПрдХ рджреМрдбрд╝ рдХреА рд╕реНрдерд┐рддрд┐ / рдЧреИрд░-рдереНрд░реЗрдб-рд╕реБрд░рдХреНрд╖рд┐рдд рдСрдкрд░реЗрд╢рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдХреБрдЫ рдбреНрд░реЙрдмрд▓ рд╕реНрдЯреЗрдЯреНрд╕ рдХреЛ рдирд╖реНрдЯ рдХрд░ рджреЗрддрд╛ рд╣реИ рдЬрдмрдХрд┐ рд╡реЗ рдЕрднреА рднреА рдЙрдкрдпреЛрдЧ рдореЗрдВ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред @ fabriziobertoglio1987

рдмрд╣реБрдд рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж @sunnylqm рдореБрдЭреЗ рд╕рд╣рдпреЛрдЧ рдХреА рд╢рдХреНрддрд┐ рдореЗрдВ рд╡рд┐рд╢реНрд╡рд╛рд╕ рд╣реИ рдФрд░ рдореИрдВ рдХреБрдЫ рдХрд╛рдо рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдкреБрд▓ рдЕрдиреБрд░реЛрдз рдХреЛ

рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ key рдФрд░ React.PureComponent рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рд╕рдорд╕реНрдпрд╛ рдХреБрдЫ рдЧрдВрджреЗ рдорд╛рдкрджрдВрдбреЛрдВ рд╕реЗ рдЬреБрдбрд╝реА рд╣реИред

https://github.com/facebook/react-native/blob/f00795dc90d05180014eeea4b3215b0166a90692//books /Lists/VirtualizedList.js#L345 -L348

https://github.com/facebook/react-native/blob/f00795dc90d05180014eeea4b3215b0166a90692/Libraries/Lists/VirtualizedList.js#L820

https://github.com/facebook/react-native/blob/f00795dc90d05180014eeea4b3215b0166a90692//books /Lists/VirtualizedList.js#L1254 -L1255

рдЖрдк рд╕рд╣реА рд╣реИрдВ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдХреЗрд╡рд▓ TextInput рдШрдЯрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдЕрдиреБрднрд╡ рдХреА рдЬрд╛рддреА рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП TextInput Text renderItem рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рдХрд░реЗрдВрдЧреЗ

<FlatList
  renderItem={({item}) => <TextInput value={"testing"} />}

Text рдФрд░ TextInput рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмреАрдЪ рдХрд╛ рдЕрдВрддрд░ рдпрд╣ рд╣реИ рдХрд┐ const element ForwardRef рд╕рд╛рде TextInput ред TextInput рдиреАрдЪреЗ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдХреБрдВрдЬреА рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдкрд░ рдПрдХ рд░рдирдЯрд╛рдЗрдо рдмрдирд╛рддрд╛ рд╣реИред рдореИрдВрдиреЗ underlineColorAndroid="transparent" рднреА рдирд┐рдХрд╛рд▓ рджрд┐рдпрд╛ рдФрд░ рдпрд╣ рддреНрд░реБрдЯрд┐ рдХрд╛ рдХрд╛рд░рдг рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдЗрд╕реЗ рдиреАрдЪреЗ рд▓реЙрдЧ рдореЗрдВ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ред

https://github.com/facebook/react-native/blob/980900c6343b93259e46edd44b6f267aa534cde5/Lbooks/Lists/Virtualizedistist.js#L1985 -L199090

console.log("element", element);
//=> element <Text value="testing" />
//=> element <ForwardRef(TextInput) allowFontScaling={true} rejectResponderTermination={true} underlineColorAndroid="transparent" value="testing" />

TextInput рдПрдХ рдлрд╛рд░рд╡рд░реНрдб рд░рд┐рдЯрд░реНрди рджреЗрддрд╛ рд╣реИ

https://github.com/facebook/react-native/blob/f00795dc90d05180014eeea4b3215b0166a90692/Libraries/Components/TextInput/TextInput.js#L1153

https://github.com/facebook/react-native/blob/f00795dc90d05180014eeea4b3215b0166a90692/books/Compords/TextInput-TextInput.js#L957 -L990

рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдЬрд╛рд╡рд╛ рдПрдкреАрдЖрдИ рдореЗрдВ рдПрдХ рд╡рд┐рдзрд┐ рдХреЛ TextInput рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдПрдкреАрдЖрдИ рд╕реЗ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд▓рд╛рдкрддрд╛ / рдЧрдВрджреЗ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рд╛рдеред рдпрд╣ NPE рд░рдирдЯрд╛рдЗрдо рддреНрд░реБрдЯрд┐ рдХрд╛ рдХрд╛рд░рдг рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдХрд╛рд░рдг рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП JS TextInput API рдХреЗ рд╣рд░ рдкрд╣рд▓реВ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ key рдкреНрд░реЛрдк рд╕рдорд╕реНрдпрд╛рдПрдБ рдкреИрджрд╛ рдХрд░ рд░рд╣рд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ React рддрдВрддреНрд░ key рдкреНрд░реЛрдк рдХреА рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ, рдпрджрд┐ рдХреЛрдИ рдкреНрд░рдореБрдЦ рдкреНрд░реЛрдк рддрдВрддреНрд░ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИ, рддреЛ рдХреИрд╢рд┐рдВрдЧ рдирд╣реАрдВ рд╣реИ рдФрд░ рдмрд╛рдж рдореЗрдВ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рд╣реИред ред

рдХрд▓ рдореИрдВ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдЙрдкрд░реЛрдХреНрдд рд╕рдВрджреЗрд╢ рдореЗрдВ рд╕рдВрджрд░реНрднрд┐рдд рдХреЛрдб рдореЗрдВ рдПрдХ рдмреНрд░реЗрдХрдкреЙрдЗрдВрдЯ рд╕реЗрдЯ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реВрдВрдЧрд╛

рд╕рд╣рд╛рдпрддрд╛ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд - рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рджред рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рд╣рдо рдПрдХ рд╕рд╛рде рдПрдХ рдкреБрд▓ рдЕрдиреБрд░реЛрдз рд▓рд┐рдЦрдиреЗ рдФрд░ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдВрдЧреЗред рдореИрдВ рдЖрдкрдХреЛ рдЗрд╕ рд╢рд╛рдо рдХреА рд╢реБрднрдХрд╛рдордирд╛рдПрдВ рджреЗрддрд╛ рд╣реВрдВред рдлреИрдмреНрд░рд┐рдЬрд┐рдпреЛ

@sunnylqm

TOO рд▓рдВрдмреА рдбреЛрдВрдб рдкрдврд╝реЗрдВ

рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреБрд▓ рдЕрдиреБрд░реЛрдз рд▓рд┐рдЦ рд░рд╣рд╛ рд╣реВрдВред рдЗрд╕реЗ рдареАрдХ рдХрд░рдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИред

рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдбрд┐рдлреЙрд▓реНрдЯ рдмреИрдХрдЧреНрд░рд╛рдЙрдВрдбрдбреНрд░рд╛рдПрдмрд▓ рд╕реЗ рдПрдбрд┐рдЯрдЯреЗрдХреНрд╕реНрдЯ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдореЗрдВ рдЙрдкрдпреЛрдЧ рд╣реЛрдиреЗ рдХреЗ рдХрд╛рд░рдг рд╣реЛрддреА рд╣реИ

https://github.com/facebook/react-native/blob/6ffb983f83afdee5d9290c683c5060d2a959818d/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactEditText.java#L111

рдбреНрд░рд╛ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╡рд╣ рд╡рд┐рд╖рдп рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╣рдо Theme.AppCompat.Light.NoActionBar рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдбреНрд░рд╛рдмрд▓ рдХреЛ рдмрджрд▓рдирд╛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓ рдЗрдирд┐рдЯ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рд╛рде рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓ рдПрдВрдбреНрд░реЙрдЗрдб рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рдкреНрд░рд╛рд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдЯреЗрдореНрдкрд▓реЗрдЯ xml рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдмрджрд▓рдХрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдореИрдВ рдПрдВрдбреНрд░реЙрдЗрдб рд╕реЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдкреНрд░рджрд╛рди рдХрд┐рдП рдЧрдП рдПрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реВрдВрдЧрд╛ рдпрд╛ рдореИрдВ рдПрдХ рдХрд╕реНрдЯрдо рдбреНрд░реЙрдмрд▓ рдмрдирд╛рдКрдВрдЧрд╛ рдФрд░ рдЗрд╕реЗ рд╣рд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд░реВрдВрдЧрд╛ред

https://github.com/facebook/react-native/blob/2b56011f9cb9f90781428b5b773cbbed5c4fae43/template/android/app/src/main/res/values/styles.xml#L1 -L6 -L6

<item name="android:editTextBackground"><strong i="18">@android</strong>:drawable/edit_text</item>

рдпрд╛

https://github.com/facebook/react-native/blob/2b56011f9cb9f90781428b5b773cbbed5c4fae43/template/android/app/src/main/res/values/styles.xml#L1 -L6 -L6

<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 рд╕реНрдерд┐рд░ рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП html рдЬреИрд╕реЗ xml рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЬрдмрдХрд┐ рдЬрд╛рд╡рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЧрддрд┐рд╢реАрд▓ рд╕рд╛рдордЧреНрд░реА (рдЬреИрд╕реЗ рд╡реЗрдм рдореЗрдВ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ) рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

https://github.com/facebook/react-native/blob/6ffb983f83afdee5d9290c683c5060d2a959818d/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactEditText.java#L111

4) ReactNative Context API рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдмрдирддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди 1-3 рд╕реЗ рд╕рдорд╛рди рдкреИрдЯрд░реНрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛ред
context рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд╕рд╛рде рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреА рд╢реБрд░реБрдЖрдд рдХрд░реЗрдВ, рдлрд┐рд░ рд╕реАрдзреЗ context рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдХреЛ рдмрджрд▓реЗ рдмрд┐рдирд╛ рдЧрддрд┐рд╢реАрд▓ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рд▓реЗрдХрд┐рди Android рдПрдкреАрдЖрдИ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ react-native рдмреНрд░рд┐рдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред

| рдкрд╣рд▓реЗ | AFTER | TextInput рд╕реНрдЯрд╛рдЗрд▓ рдкреНрд░реЙрдкреНрд╕ рдХреЗ рд╕рд╛рде AFTER |
|: -------------------------: |: -------------------- -----: |: -------------------------: |
| | | |

рдореИрдВ рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ EditText рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдбреНрд░рд╛рдмрд▓ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП
рдереАрдо Theme.AppCompat.Light.NoActionBar рд╕реЗ <strong i="27">@android</strong>:drawable/edit_text рд╣рдорд╛рд░реЗ рдбрд┐рдЬрд╛рдЗрди рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╣реИред рдпрджрд┐ рдкреИрд░реЗрдВрдЯ рд╣реЗрдЬреЗрд░ рд╣реИ рддреЛ рдкреИрд░реЗрдВрдЯ рд╡реНрдпреВ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдбреНрд░реЙ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдКрдВрдЪрд╛рдИ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ ReactNative рдХрдо рдКрдВрдЪрд╛рдИ рдХреЗ рд╕рд╛рде рдПрдХ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдбреНрд░реЙрдмрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИ рдФрд░ рдлрд┐рд░ рдЗрд╕реЗ рдкреЗрд░реЗрдВрдЯ рд╡реНрдпреВ рдореЗрдВ match_parent рд╕рд╛рде рдПрдбрд╛рдкреНрдЯ рдХрд░ рд░рд╣рд╛ рд╣реИред

1) рд╡рд┐рдХрд▓реНрдк 1 - рдХрд┐рд╕реА рдЕрдиреНрдп рд╡рд┐рд╖рдп рд╕реЗ рдПрдХ рдбреНрд░рд╛ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдЦреЛрдЬреЗрдВ

2) рд╡рд┐рдХрд▓реНрдк 2
рд╕рднреА рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рд▓рд┐рдП рдХрдо рдКрдВрдЪрд╛рдИ рдХреЗ рд╕рд╛рде

рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдПрдВрдбреНрд░реЙрдЗрдб рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рдирд┐рдореНрди рдкрд┐рдХреНрд╕реЗрд▓ рдХреЗ рд╕рд╛рде рдКрдВрдЪрд╛рдИ рддрдХ рдЦреАрдВрдЪрд╛

Screenshot from 2020-07-20 13-34-54

рдкреГрд╖реНрдарднреВрдорд┐ рдЕрдкрдиреЗ рдорд╛рддрд╛-рдкрд┐рддрд╛ рдХреА рдКрдВрдЪрд╛рдИ 10 рддрдХ рджреЗрдЦрдиреЗ рдпреЛрдЧреНрдп рд╣реИ

рдкреГрд╖реНрдарднреВрдорд┐ рдХреЛ рджреЗрдЦрдиреЗ рдпреЛрдЧреНрдп рдЕрдкрдиреЗ рдорд╛рддрд╛-рдкрд┐рддрд╛ рдХреЗ рджреГрд╢реНрдп рдХреА рдКрдВрдЪрд╛рдИ 100 рддрдХ рдмрдврд╝рд╛рддреА рд╣реИ

рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЫреЛрдЯреЗ рдмреИрдХрдЧреНрд░рд╛рдЙрдВрдб рдбреНрд░реЙрдмрд▓реНрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рд╣реИ, рддреЛ рд╣рдореЗрдВ рдмрд╕ рдЗрд╕ рдмреИрдХрдЧреНрд░рд╛рдЙрдВрдб рдХреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕ рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП react-native init рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреА рдЬрд░реВрд░рдд рд╣реИред рдореИрдВ рдПрдХ рдкреБрд▓ рдЕрдиреБрд░реЛрдз рдореЗрдВ рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ рдЙрдкрд░реЛрдХреНрдд рдЙрддреНрдХреНрд░рдордг рдкрд░рд┐рд╡рд░реНрддрди рдЬреЛрдбрд╝ рджреВрдВрдЧрд╛ред

https://github.com/facebook/react-native/blob/2b56011f9cb9f90781428b5b773cbbed5c4fae43/template/android/app/src/main/res/values/styles.xml#L1 -L6 -L6

рдмрд╣реБрдд рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рджред рдлреИрдмреНрд░рд┐рдЬрд┐рдпреЛ

RN 0.61.0 + Android API рд╕реНрддрд░ 28 рдХреЗ рд╕рд╛рде рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ред
рдореИрдВрдиреЗ рдЗрд╕реЗ рдлрд╝реНрд▓реИрдЯрд▓рд┐рд╕реНрдЯ, рдЯреЗрдХреНрд╕реНрдЯрдЗрдирдкреБрдЯ рдФрд░ рдиреЗрд╕реНрдЯреЗрдб рдХрдВрдкреЛрдиреЗрдВрдЯ рд░реЗрдВрдбрд░ рдХреЗ рдХреБрдЫ рд╕рдВрдпреЛрдЬрди рддрдХ рд╕реАрдорд┐рдд рдХрд░ рджрд┐рдпрд╛ рд╣реИ

@ fabriziobertoglio1987 рдореИрдВ рдЗрд╕ рддрд░рд╣ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИ, рд▓реЗрдХрд┐рди рд╢рд╛рдпрдж рдореИрдВ sth рдпрд╛рдж рдХрд┐рдпрд╛ рдХрд┐ рдореИрдВ рдЗрд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ред рдореБрдЭреЗ 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>

рд░рдирдЯрд╛рдЗрдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдХреЗ рдХрд╛рд░рдг рд╣реЛрддрд╛ рд╣реИ, рдЕрдЧрд░ рдореИрдВ react-native рдХрд╛рд░реНрдпреЛрдВ рд╕реЗ рд╡рд░реНрддрдорд╛рди рдбреНрд░реЙрдмрд▓ рдХреА рдПрдХ рд╕рдЯреАрдХ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдирд┐рдХрд╛рд▓рддрд╛ рд╣реВрдВ рдФрд░ рд░рдирдЯрд╛рдЗрдо рддреНрд░реБрдЯрд┐ рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдореИрдВрдиреЗ рдЕрдкрдиреЗ 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 рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдЗрд╕ рдкрд░рд┐рджреГрд╢реНрдп рдХрд╛ рдкреБрдирд░реБрддреНрдкрд╛рджрди рд╢рд╛рдорд┐рд▓ рд╣реЛрдЧрд╛, рдЗрд╕ рдореБрджреНрджреЗ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрд░реЛрдХреНрдд рдХрд╕реНрдЯрдо рдбреНрд░рд╛рдлрд╝реНрдЯ рдХреЗ рдЯреЗрдореНрдкрд▓реЗрдЯ рдФрд░ рдкрд░рд┐рд╡рд░реНрдзрди рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрдиред

https://github.com/facebook/react-native/blob/2b56011f9cb9f90781428b5b773cbbed5c4fae43/template/android/app/src/main/res/values/styles.xml#L1 -L6 -L6

рдпрд╣ рдПрдХ рд╡реАрдбрд┐рдпреЛ рд╣реИ рдЬреЛ рд░рдирдЯрд╛рдЗрдо рддреНрд░реБрдЯрд┐ рдХреЛ рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдЬрдм рдбреНрд░реЙрдмрд▓ рдореЗрдВ <item android:state_pressed="false" android:state_focused="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"/>

рдЬреИрд╕рд╛ рдХрд┐ рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдореИрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд▓рд╛рдЗрди рдХреЛ рдбреНрд░рд╛ рдХрд░рдиреЗ рдпреЛрдЧреНрдп 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 рдЬреЛ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд╣рд▓ рдХрд░рддреА рд╣реИред

рдХреБрдЫ рдЙрдкрдХрд░рдгреЛрдВ / Android рдУрдПрд╕ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ Drawable.mutate () рдореЗрдВ рдПрдХ рдмрдЧ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ, рднрд▓реЗ рд╣реА рдЖрдк рдирд┐рд░рдВрддрд░ рд╕реНрдерд┐рддрд┐ рдХреА рдЬрд╛рдВрдЪ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рддреНрд░реБрдЯрд┐ рдкреБрди: рдкреЗрд╢ рдХрд░рдиреЗ рдФрд░ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдард┐рди рд╣реИ, рдЗрд╕рд▓рд┐рдП рджреБрд░реНрдШрдЯрдирд╛ рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрд╡рд╛рдж рдХреЛ рдкрдХрдбрд╝рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВред

рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдПрдХреНрд╕реНрдЯреНрд░рд╛рд╕ / рдПрдВрдбреНрд░реЙрдЗрдб / рд╕рдкреЛрд░реНрдЯ / 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 рдкреГрд╖реНрдарднреВрдорд┐ рдЫрд╡рд┐ (рдкреГрд╖реНрдарднреВрдорд┐ Drawable рдХреА рд╕реНрдерд┐рддрд┐ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ) TextInput ред

state_pressed="false" рдФрд░ state_focused="false" TextInput BackgroundDrawable рдХреЗ рдкрд░рд┐рд╡рд░реНрддрди рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд░реЗрдВрдЧреЗред рдЫрд╡рд┐рдпрд╛рдВ рдореБрджреНрджреЗ рдХрд╛ рдХрд╛рд░рдг рдирд╣реАрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдЙрдиреНрд╣реЗрдВ рдкреНрд░рд▓реЗрдЦрди рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рд╣реИред

| abc_textfield_activated_mtrl_alpha | abc_textfield_default_mtrl_alpha |
|: -------------------------: |: -------------------- -----: |
| | |

рдЗрдирдбрдмрд▓рдЯреЗрдмрд▓рдЯреЗрдирд░.рдЧреЗрдЯрдЪрд╛рдЗрд▓реНрдб () рдХрд╛рдВрд╕реНрдЯреЗрдВрдЯрд╕реНрдЯреЗрдЯ рд╡реЗрд░рд┐рдПрдмрд▓ рд╕реАрдПрд╕ 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 -+ремрем,резрез,ренрек,ренренреж https://github.com/facebook/react-native/issues/17530#issuecomment -+ремрем,режреп,режрео,резрелреж https: //github.com/facebook/react-native/issues/17530#issuecomment -+ремрем,режрел,режрем,режрежрез https://github.com/facebook/react-native/issues/17530#issuecomment -+ремрем,режрек,релрео,резрепрез https://github.com/facebook/ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓рдХ / рдореБрджреНрджреЗ / 17530 # рдЬрд╛рд░реАрдХрд░рдг -660017858 https://github.com/facebook/react-native/issues/17530#issuecomment -659422298 https: // github-facebook /react-native/issues/17530# рдЬрд╛рд░реАрдХрд░рдг -645851033 https://github.com/facebook/react-native/issues/17530#issuecomment -632795323

рдмрд╣реБрдд рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж
рдореИрдВ рдЖрдкрдХреЛ рдЕрдЪреНрдЫреЗ рджрд┐рди рдХреЗ рд▓рд┐рдпреЗ рд╢реБрднрдХрд╛рдордирд╛ рджреЗрддрд╛ рд╣реВрдБ
рдлреИрдмреНрд░рд┐рдЬрд┐рдпреЛ

@ fabriziobertoglio1987 рдЙрдкрд░реЛрдХреНрдд рдЯрд┐рдкреНрдкрдгреА рдХреЗ рдЖрд╕рдкрд╛рд╕ рдПрдХ рдХрд╛рдо рд╣реИ рдпрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдлрд┐рдХреНрд╕ рд╣реИ рдЬрд┐рд╕реЗ рдореВрд▓ рдирд┐рд╡рд╛рд╕реА рдХреЛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдЬреЛрдбрд╝рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рд╣рдо рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЖрд░рдПрди 0.59.3 рдкрд░ рд╣реИрдВ рдФрд░ рдпрд╣ рддреНрд░реБрдЯрд┐ рдХреЗрд╡рд▓ рдЙрддреНрдкрд╛рджрди рдЙрдкрдпреЛрдЧ рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВред рд╣рдо рд╡рд┐рдХрд╛рд╕ рдХреА рдирдХрд▓ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред

@ рдХреЙрдлрд╝реАрдЧрд░реНрдо рдЙрдкрд░реЛрдХреНрдд рдЯрд┐рдкреНрдкрдгреА https://github.com/facebook/react-native/issues/17530#issuecomment -662000718 рдореЗрд░рд╛ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдЕрдиреБрд░реЛрдз рд╣реИ рдХрд┐ рдореЗрд░рд╛ рдкреБрд▓ рдХреИрд╕реЗ рдЕрдиреБрд░реЛрдз рдХрд░рддрд╛ рд╣реИ https://github.com/facebook-react-native/pull / 29452 рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИред рдПрдХ рдмрд╛рд░ рдкреБрд▓ рдЕрдиреБрд░реЛрдз рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓ рдореЗрдВ рд╡рд┐рд▓рдп рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ

1) рдирдП рдРрдкреНрд╕ рдореЗрдВ рдпрд╣ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рд╣реЛрдЧреА
2) рдореМрдЬреВрджрд╛ рдПрдкреНрд╕ рдЕрдкрдЧреНрд░реЗрдб рд╣реЛрдВрдЧреЗ рдФрд░ рд╡реЗ рддреНрд░реБрдЯрд┐ рдХрд╛ рдЕрдиреБрднрд╡ рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗред рдЬрдм рдЖрдк рдЕрдкрдирд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЕрдкрдЧреНрд░реЗрдб рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЕрдкрдиреЗ /android рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП # 3-рдЕрдкрдЧреНрд░реЗрдб-рдкреНрд░реЛрдЬреЗрдХреНрдЯ-рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ

рдЕрдЧрд░ рдЖрдк рдЕрдкрдЧреНрд░реЗрдб рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдореЗрд░реЗ PR https://github.com/facebook/react-native/pull/29452 рдХреЛ рдЪреЗрдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЙрди рдмрджрд▓рд╛рд╡реЛрдВ рдХреЛ рдЕрдкрдиреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ android рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред рдЖрдкрдХреЛ react-native рд╕реЛрд░реНрд╕рдХреЛрдб рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕ PR рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдкрд░рд┐рд╡рд░реНрддрди /ReactAndroid Java рдХреЛрдбрдмреЗрд╕ рдореЗрдВ рдирд╣реАрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди Android рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЛ рдЖрд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдкрд░рд┐рдпреЛрдЬрдирд╛ред

рдореИрдВ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЕрдиреНрдп рдореБрджреНрджреЛрдВ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рд╡рд╛рдкрд╕ рдЖрдКрдВрдЧрд╛, рдХрд┐рд╕реА рднреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдЬрд╡рд╛рдм рджреВрдВрдЧрд╛ рдФрд░ рдЕрдкрдиреЗ рдкреБрд▓ рдЕрдиреБрд░реЛрдз рдореЗрдВ рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХ рд╕реБрдзрд╛рд░ рдХрд░реВрдВрдЧрд╛ред

рдХреГрдкрдпрд╛ рд╕реБрдзрд╛рд░ рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рднреА рд╕реБрдЭрд╛рд╡ рдХреЗ рд╕рд╛рде рдореЗрд░реЗ рдкрд╛рд╕ рд╡рд╛рдкрд╕ рдЖрдПрдВред

рдореИ рддреБрдореНрд╣реЗрдВ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╕рдкреНрддрд╛рд╣рд╛рдВрдд рдХреА рд╢реБрднрдХрд╛рдордирд╛ рджреЗрддрд╛ рд╣реВрдБ
рдЖрдкрдХреА рд╕рд╣рд╛рдпрддрд╛ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж
рдлреИрдмреНрд░рд┐рдЬрд┐рдпреЛ

рдмрд╕ рдПрдХ рдХрдорд┐рдЯ рджреЗрдЦреА рдЬреЛ https://github.com/facebook/react-native/commit/1e4d8d902daca8e524ba67fc3c1f4b77698c4d08 рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд▓рдЧрддреА рд╣реИ

рд╣рдо рдХрдбрд╝рд╛рдИ рд╕реЗ рдмрд╣реБрдд рд╕рд╛рд░реЗ рд╕реГрдЬрди рдХрд░ рд░рд╣реЗ рдереЗ + рдЕрдирд╛рд╡рд╢реНрдпрдХ рд░реВрдк рд╕реЗ рдмрдирд╛рдП рдЧрдП рдСрдкрд░реЗрд╢рди рд╣рдЯрд╛рдПрдВ рдФрд░ рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдкрд░ рд╕реНрдерд┐рд░рддрд╛ рдХреЗ рдореБрджреНрджреЛрдВ, рдХреНрд░реИрд╢, рдпрд╛ рдмрдЧ рдХрд╛ рдХрд╛рд░рдг рдмрди рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдЙрд╕ рдЗрдирд╛рдпрдд рдХреЛ рд╕рдВрднрд╛рд▓ рдирд╣реАрдВ рдкрд╛рддреЗ рд╣реИрдВ -
рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдХреНрд░рд┐рдПрдЯ + рдбрд┐рд▓реАрдЯ рдХреЗ рдЖрджреЗрд╢ рдХреА рдЧрд╛рд░рдВрдЯреА рдирд╣реАрдВ рд╣реИ (рдПрдХ рдкреНрд░рддрд┐рд░реВрдкрд┐рдд рджреГрд╢реНрдп рдХреЛ "рдкрд╣рд▓реЗ" рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдлрд┐рд░ рдмрд╛рдж рдореЗрдВ рд╡рд╣реА рджреГрд╢реНрдп рдХреЗ рд▓рд┐рдП "рдбрд┐рд▓реАрдЯ" рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ)ред

@ fabriziobertoglio1987

рдПрдХреНрд╕рдкреЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдХреЛрдИ рднреА рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдХреИрд╕реЗ рдареАрдХ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рдХрд╛ рдХреЛрдИ рднреА рд╡рд┐рдЪрд╛рд░, рдЗрд╕рд▓рд┐рдП рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдПрдВрдбреНрд░реЙрдЗрдб рдлрд╝реЛрд▓реНрдбрд░ рддрдХ рдкрд╣реБрдВрдЪ рдХреЗ рдмрд┐рдирд╛? ЁЯШЕ

@divonelnc рдПрдХ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рд╣реИ: рдПрдХ рдирдИ рдХреБрдВрдЬреА рдХрд╛ рд╣рд░ рдмрд╛рд░ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рдЬрдм рдПрдХ textinput рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП,

<TextInput key={Math.random()} />

рдФрд░ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдпрд╣ рдХреБрдЫ рдЕрдиреНрдп рд╕рдорд╕реНрдпрд╛рдУрдВ рдФрд░ рдкреНрд░рджрд░реНрд╢рди рд╣рд╛рдирд┐ рдХрд╛ рдХрд╛рд░рдг рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

@sunnylqm рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рдпрд╣ рдорджрдж рдирд╣реАрдВ рдХреА

рдореИрдВ рдЙрддреНрдкрд╛рджрди рдореЗрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХреА рдкреБрд╖реНрдЯрд┐ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ! рдЖрд░рдПрди: 0.62.2 .2

RN 0.63.2 :( рдореЗрдВ рд╡рд╣реА рдореБрджреНрджрд╛ рдЖрдпрд╛

рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░ рд╕рдХрддреА рд╣реИ:
https://github.com/facebook/react-native/commit/a5b5d1a805a9c54d325763b432be1cf2c8811dc9

рдПрдХреНрд╕рдкреЛ рдФрд░ рдЖрд░рдПрди sdk рдХреЗ рд╕рд╛рде рдПрдХ рд╣реА рдореБрджреНрджрд╛ https://github.com/expo/react-native/archive/sdk-38.0.2.tar.gz

рд╡рд╛рд╣ рдпрд╣ рдирд┐рд░рд╛рд╢рд╛ рдереАред @WilliamAlexander @ рд╕рдорд╛рдзрд╛рди рдХрд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдЗрд╕реЗ рд╣рд░ рдмрд╛рд░ рдкрд╣рд▓реЗ рд░рд┐рдкреНрд░реЛрдб рдХрд░ рд╕рдХрддрд╛ рдерд╛ред
// style.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>

рдпрд╣рд╛рдБ рдПрдХ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рди рд╣реИред рдЬреЛ рднреА рдкрд╛рда рдЗрдирдкреБрдЯ рдШрдЯрдХ рдЖрдк рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЙрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрд╡рд░рдг рдмрдирд╛рдПрдВ рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдХреБрдВрдЬреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдЗрд╕ рддрд░рд╣ рд╕реЗ рдПрдХ рдПрдХрд▓ рдкрд╛рда рдЗрдирдкреБрдЯ рдореЗрдВ рдкреБрдирдГ рд░реЗрдВрдбрд░рд░реНрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рд╣реА рдХреБрдВрдЬреА рд╣реЛрдЧреА, рдФрд░ рдЖрдкрдХреЛ рдЕрдкрдиреЗ рд╕рднреА рдкрд╛рда рдЗрдирдкреБрдЯреЛрдВ рдХреЗ рд▓рд┐рдП рдХреБрдВрдЬрд┐рдпрд╛рдБ рдирд╣реАрдВ рд▓рд┐рдЦрдиреА рд╣реЛрдВрдЧреАред

export default (props: TextInputProps) => {
  const key = useMemo(() => {
    return Math.random().toString()
  }, [])

  return (
    <TextInput key={key} {...props} />
  )
}

рдпрджрд┐ рдЖрдкрдХрд╛ рдПрдХреНрд╕рдкреЛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИ
рдПрдХреНрд╕рдкреЛ рдПрд╕рдбреАрдХреЗ 38 рд╕реЗ 39 рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдореБрдЭреЗ рдпрд╣ рддреНрд░реБрдЯрд┐ рдорд┐рд▓реАред
рдореБрдЭреЗ рдЕрдкрдиреЗ рдПрдХреНрд╕рдкреЛ рдХреИрд╢ (рдПрдХреНрд╕рдкреЛ-рдЖрд░реНрдХ) + рдПрдХреНрд╕рдкреЛ рдореЛрдмрд╛рдЗрд▓ рдРрдк рдХреИрд╢ (рдореИрдВ рдЗрд╕реЗ рдЕрдирдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рдирд╛ рдФрд░ рдлрд┐рд░ рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛) рдФрд░ рддреНрд░реБрдЯрд┐ рджреЛрдиреЛрдВ рдХреЛ рд╕рд╛рдл рдХрд░рдирд╛ рдерд╛ред

@dpnick рдмрдЧ рдХреЛ рдкреБрди: рдкреЗрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдХрдард┐рди рд╣реИред рдореИрдВ рдкрд░реАрдХреНрд╖рдг рдШрдЯрдХ рдореИрдВ рддреИрдирд╛рдд рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рдпрд╣рд╛рдБ рдпрдХреАрди рд╣реИ рдХрд┐ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЪрд▓рд╛ рдЧрдпрд╛ рд╣реИ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдПред

рдЙрддреНрдкрд╛рджрди рдореЗрдВ рдпрд╣ рддреНрд░реБрдЯрд┐ рд╣реЛ рд░рд╣реА рд╣реИ рдФрд░ рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдкреБрди: рдкреЗрд╢ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реВрдВ, рдореЗрд░рд╛ рдЖрд░рдПрди рд╕рдВрд╕реНрдХрд░рдг 0.62.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: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

рдХреГрдкрдпрд╛ https://github.com/facebook/react-native/pull/29452 рдкрд░ рдЬрд╛рдПрдВ , рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░реЗрдВ https://github.com/facebook/react-native/wiki/Building-from-source/publish - рдЖрдкрдХрд╛ рдЕрдкрдирд╛-рд╕рдВрд╕реНрдХрд░рдг-рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдореВрд▓ рдирд┐рд╡рд╛рд╕реА рдФрд░ рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдХреЛрдИ рдорджрдж рдЪрд╛рд╣рд┐рдПред рдЕрдЧрд░ рдПрдХреНрд╕рдкреЛ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рдЬрдирд╕рдВрдкрд░реНрдХ рд▓рд┐рдЦрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ, рддреЛ рдореИрдВ рдЗрд╕ рд╕рдкреНрддрд╛рд╣ рдХреЗ рдЕрдВрдд рдореЗрдВ рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛, рд▓реЗрдХрд┐рди рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдПрдХ рдмрд╛рд░ рдЗрд╕ рдЬрдирд╕рдВрдкрд░реНрдХ рдХреЗ рд╡рд┐рд▓рдп рдФрд░ рдЬрд╛рд░реА рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рд╡реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рдХреЛ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдХреЗ рдареАрдХ рдХрд░ рд▓реЗрдВрдЧреЗред рдмрд╣реБрдд рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рджред рдореИрдВ рдЖрдкрдХреЗ рд▓рд┐рдП рд╢реБрдн рд░рд╛рддреНрд░рд┐ рдХреА рдХрд╛рдордирд╛ рдХрд░рддрд╛ рд╣реВрдБрдВ

рдореЗрд░реА рдкрд┐рдЫрд▓реА рдкреЛрд╕реНрдЯреНрд╕ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА https://github.com/facebook/react-native/issues/17530#issuecomment -662000718

рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рд╕рдорд╛рди рдореБрджреНрджрд╛ "react-native": "0.63.3"

рдореЛрдмрд╛рдЗрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди (рдпрджрд┐ рдЖрдк рдореЛрдмрд╛рдЗрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ) рдпрд╛ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдХрд┐рд╕реА рднреА рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдореЗрдВ рдПрдХреНрд╕рдкреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдХреИрд╢ рдХрд╛ рдЕрдкрдирд╛ рдХреИрд╢ рд╕рд╛рдлрд╝ рдХрд░реЗрдВред

@ tzeneng96 рдареАрдХ рд╣реИ, рдХреИрд╢ рдХреЛ рд╕рд╛рдлрд╝ рдХрд░рдирд╛ рдРрдк рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рд╕реНрд╡реАрдХрд╛рд░реНрдп рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рд╣реЛрддрд╛ рд╣реИ!

@AbdelkhalekESI рдмрдЧ рдХреЛ рдкреБрди: рдкреЗрд╢ рдХрд░рдирд╛ рдмрд╣реБрдд рдХрдард┐рди рд╣реИред рдХреНрдпрд╛ рдЖрдкрдиреЗ рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдкреЛрд╕реНрдЯ рдХрд┐рдП рдЧрдП рдкрд░реАрдХреНрд╖рдг рдШрдЯрдХ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИ ?

рдореИрдВ рдЗрд╕ рдШрдЯрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕ рдмрдЧ рдХреЛ рдкреБрди: рдкреЗрд╢ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛ред рдореБрдЭреЗ рдЙрддреНрдкрд╛рджрди рдореЗрдВ рдЗрд╕ рджреБрд░реНрдШрдЯрдирд╛ рдХреЗ рдХрдИ рд▓реЙрдЧ рднреА рдорд┐рд▓реЗ рд╣реИрдВред рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рд╡рд░реНрддрдорд╛рди рдореЗрдВ 0.63.3 рд╕рдВрд╕реНрдХрд░рдг рдкрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╣реИред

рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдореБрдЭреЗ рдпрд╣ рдЧрд▓рдд рд▓рдЧрд╛, рд▓реЗрдХрд┐рди рдЗрд╕ рд╡рд┐рд╖рдп рдореЗрдВ @ рдЧреНрд▓реЗрди-рдПрдХреНрд╕рд╕реА рджреНрд╡рд╛рд░рд╛ рдЙрджреНрдзреГрдд рдХрд┐рдпрд╛ рдЧрдпрд╛, рдЬреЛ рдореБрдЭреЗ рд╕рдордЭ рдореЗрдВ рдЖрдпрд╛ рдХрд┐ рд╡реЗ рдЗрди-рдУрдб \ рдПрдк \ src \ main \ res \ values тАЛтАЛ\ рд╕реНрдЯрд╛рдЗрд▓ \ xml рдХреЛ рдЬреЛрдбрд╝рдХрд░ рд╣рд▓ рдХрд░рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣реЗ рдордж # рдЬрд┐рдВрд╕:
"рдЖрдЗрдЯрдо рдХрд╛ рдирд╛рдо =" Android: editTextBackground "> @ Android: рд░рдВрдЧ / рдкрд╛рд░рджрд░реНрд╢реА / рдЖрдЗрдЯрдо"

рдореИрдВ рдЕрднреА рднреА рд╕рдорд╛рдзрд╛рди рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░ рд░рд╣рд╛ рд╣реВрдВред

@thiagocristianno рдЖрдкрдХреА рд╕рдордЭ рд╕рд╣реА рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдПрдХ рд╕рд╣реА рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реИ рдФрд░ рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдпрд╣ рдПрдХреНрд╕рдкреЛ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреА рдорджрдж рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдЗрд╕ рд╕реЗрдЯрд┐рдВрдЧ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рд╡рд╛рд╣ рдпрд╣ рдирд┐рд░рд╛рд╢рд╛ рдереАред @WilliamAlexander @ рд╕рдорд╛рдзрд╛рди рдХрд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдЗрд╕реЗ рд╣рд░ рдмрд╛рд░ рдкрд╣рд▓реЗ рд░рд┐рдкреНрд░реЛрдб рдХрд░ рд╕рдХрддрд╛ рдерд╛ред
// style.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 @ рд╕рдорд╛рдзрд╛рди рдХрд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдЗрд╕реЗ рд╣рд░ рдмрд╛рд░ рдкрд╣рд▓реЗ рд░рд┐рдкреНрд░реЛрдб рдХрд░ рд╕рдХрддрд╛ рдерд╛ред
// style.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 рдиреЛ рдПрдХреНрд╕рдкреЛ

Screen Shot 2020-11-18 at 1 18 45 PM

@ рдЬреЛрд░реНрдбрдирдЧреНрд░рдВрде ,

рдпрд╣ рднреА рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд▓рдЧрд╛рддрд╛рд░ рджреЛрд╣рд░рд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдереЗред рдореИрдВ рд╕реЛрдЪ рд░рд╣рд╛ рд╣реВрдБ рдХрд┐ рддреБрдо рдРрд╕рд╛ рдХреИрд╕реЗ рдХрд░рддреЗ рд╣реЛред рдореИрдВрдиреЗ рдЕрдм рддрдХ рдХреЗрд╡рд▓ рд╕реНрдЯреИрдХ рдЯреНрд░реЗрд╕ рджреЗрдЦрд╛ рд╣реИред рдореИрдВ рдлрд┐рдХреНрд╕ рдХреЛ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЛрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛ рд░рд╣рд╛ рд╣реВрдВред

@bobowinca рдореИрдВрдиреЗ рдпрд╣рд╛рдВ рдЬреЛ рдкрд░реАрдХреНрд╖рдг рдШрдЯрдХ рдкреЛрд╕реНрдЯ рдХрд┐рдпрд╛

@bobowinca рдореИрдВрдиреЗ рдпрд╣рд╛рдВ рдЬреЛ рдкрд░реАрдХреНрд╖рдг рдШрдЯрдХ рдкреЛрд╕реНрдЯ рдХрд┐рдпрд╛

рдПрдХ рдЬрд╛рджреВ рдХреА рддрд░рд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ! рдзрдиреНрдпрд╡рд╛рдж рдЧреНрд▓реЗрди!

рд╢реИрд▓рд┐рдпреЛрдВ рдореЗрдВ <item name="android:editTextBackground"><strong i="5">@android</strong>:color/transparent</item> рдЬреЛрдбрд╝рдирд╛ред Xml рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ!
TextInput рдХреЗ key={Math.random().string()} рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреА рд╡рд┐рдзрд┐ рдХрд╛рдо рдХрд░ рд░рд╣реА рдереА, рд▓реЗрдХрд┐рди рд░реЗрдВрдбрд░реНрд╕ рд╣рд░ рдмрд╛рд░ рд╕реЗрдХрдВрдб рдХреЗ рдмрд╛рдж рдХреАрдмреЛрд░реНрдб рдЫрд┐рдкрд╛рдиреЗ рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИ - рдпрд╣ рдЕрд╕реНрд╡реАрдХрд╛рд░реНрдп рдерд╛ред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

despairblue picture despairblue  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

jobsamuel picture jobsamuel  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

oney picture oney  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

lazywei picture lazywei  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

TrakBit picture TrakBit  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ