Browse Source

Resolve Title TextView using findChildrenByClass

Guy Carmeli 6 years ago
parent
commit
bf31bb7e78

+ 3
- 18
lib/android/app/src/main/java/com/reactnativenavigation/views/titlebar/TitleBar.java View File

4
 import android.app.Activity;
4
 import android.app.Activity;
5
 import android.content.Context;
5
 import android.content.Context;
6
 import android.graphics.Typeface;
6
 import android.graphics.Typeface;
7
-import android.support.annotation.Nullable;
8
 import android.support.v7.widget.Toolbar;
7
 import android.support.v7.widget.Toolbar;
9
 import android.util.Log;
8
 import android.util.Log;
10
 import android.view.Gravity;
9
 import android.view.Gravity;
11
-import android.view.View;
12
-import android.view.ViewGroup;
13
 import android.widget.TextView;
10
 import android.widget.TextView;
14
 
11
 
15
 import com.reactnativenavigation.parse.Alignment;
12
 import com.reactnativenavigation.parse.Alignment;
16
 import com.reactnativenavigation.parse.params.Button;
13
 import com.reactnativenavigation.parse.params.Button;
17
 import com.reactnativenavigation.parse.params.Color;
14
 import com.reactnativenavigation.parse.params.Color;
15
+import com.reactnativenavigation.utils.ViewUtils;
18
 import com.reactnativenavigation.viewcontrollers.ReactViewCreator;
16
 import com.reactnativenavigation.viewcontrollers.ReactViewCreator;
19
 import com.reactnativenavigation.viewcontrollers.TitleBarReactViewController;
17
 import com.reactnativenavigation.viewcontrollers.TitleBarReactViewController;
20
 import com.reactnativenavigation.viewcontrollers.TopBarButtonController;
18
 import com.reactnativenavigation.viewcontrollers.TopBarButtonController;
80
     }
78
     }
81
 
79
 
82
     public TextView getTitleTextView() {
80
     public TextView getTitleTextView() {
83
-        return findTextView(this);
81
+        List<TextView> children = ViewUtils.findChildrenByClass(this, TextView.class);
82
+        return children.isEmpty() ? null : children.get(0);
84
     }
83
     }
85
 
84
 
86
     public void clear() {
85
     public void clear() {
152
         return new TopBarButtonController((Activity) getContext(), button, buttonCreator, onClickListener);
151
         return new TopBarButtonController((Activity) getContext(), button, buttonCreator, onClickListener);
153
     }
152
     }
154
 
153
 
155
-    @Nullable
156
-    private TextView findTextView(ViewGroup root) {
157
-        for (int i = 0; i < root.getChildCount(); i++) {
158
-            View view = root.getChildAt(i);
159
-            if (view instanceof ViewGroup) {
160
-                view = findTextView((ViewGroup) view);
161
-            }
162
-            if (view instanceof TextView) {
163
-                return (TextView) view;
164
-            }
165
-        }
166
-        return null;
167
-    }
168
-
169
     public Toolbar.LayoutParams getComponentLayoutParams(Alignment alignment) {
154
     public Toolbar.LayoutParams getComponentLayoutParams(Alignment alignment) {
170
         LayoutParams lp = new LayoutParams(MATCH_PARENT, getHeight());
155
         LayoutParams lp = new LayoutParams(MATCH_PARENT, getHeight());
171
         if (alignment == Alignment.Center) {
156
         if (alignment == Alignment.Center) {