Daniel Zlotin 8 years ago
parent
commit
975acf2fb8

+ 1
- 1
android/app/src/main/java/com/reactnativenavigation/params/ScreenStyleParams.java View File

41
 
41
 
42
     public Color navigationBarColor;
42
     public Color navigationBarColor;
43
 
43
 
44
-    public boolean drawUnderTopBar;
44
+    public boolean drawBelowTopBar;
45
 }
45
 }

+ 1
- 1
android/app/src/main/java/com/reactnativenavigation/params/parsers/ScreenStyleParamsParser.java View File

26
                 new ScreenStyleParams.Color(ColorParser.parse(params.getString("bottomTabsButtonColor")));
26
                 new ScreenStyleParams.Color(ColorParser.parse(params.getString("bottomTabsButtonColor")));
27
         result.selectedBottomTabsButtonColor =
27
         result.selectedBottomTabsButtonColor =
28
                 new ScreenStyleParams.Color(ColorParser.parse(params.getString("selectedBottomTabsButtonColor")));
28
                 new ScreenStyleParams.Color(ColorParser.parse(params.getString("selectedBottomTabsButtonColor")));
29
-        result.drawUnderTopBar = params.getBoolean("drawUnderTopBar", false);
29
+        result.drawBelowTopBar = params.getBoolean("drawBelowTopBar", false);
30
         return result;
30
         return result;
31
     }
31
     }
32
 }
32
 }

+ 6
- 9
android/app/src/main/java/com/reactnativenavigation/screens/FragmentScreen.java View File

4
 import android.app.FragmentManager;
4
 import android.app.FragmentManager;
5
 import android.app.FragmentTransaction;
5
 import android.app.FragmentTransaction;
6
 import android.os.Bundle;
6
 import android.os.Bundle;
7
-import android.support.annotation.NonNull;
8
 import android.support.annotation.Nullable;
7
 import android.support.annotation.Nullable;
9
 import android.support.v7.app.AppCompatActivity;
8
 import android.support.v7.app.AppCompatActivity;
10
 import android.widget.FrameLayout;
9
 import android.widget.FrameLayout;
34
     protected void createContent() {
33
     protected void createContent() {
35
         content = new FrameLayout(getContext());
34
         content = new FrameLayout(getContext());
36
         content.setId(ViewUtils.generateViewId());
35
         content.setId(ViewUtils.generateViewId());
37
-        ContentView contentView = new ContentView(getContext(), screenParams.screenId, screenParams.passProps, screenParams.navigationParams, null);
38
-        addView(contentView, 0, 0);
39
-        addView(content, addBelowTopBar());
36
+        addContent();
40
         addFragment();
37
         addFragment();
41
-        contentView.init();
42
     }
38
     }
43
 
39
 
44
-    @NonNull
45
-    private LayoutParams addBelowTopBar() {
40
+    private void addContent() {
41
+        ContentView contentView = new ContentView(getContext(), screenParams.screenId, screenParams.passProps, screenParams.navigationParams, null);
42
+        addView(contentView, 0, 0);
46
         LayoutParams params = new LayoutParams(MATCH_PARENT, MATCH_PARENT);
43
         LayoutParams params = new LayoutParams(MATCH_PARENT, MATCH_PARENT);
47
-        if (!screenParams.styleParams.drawUnderTopBar) {
44
+        if (screenParams.styleParams.drawBelowTopBar) {
48
             params.addRule(BELOW, topBar.getId());
45
             params.addRule(BELOW, topBar.getId());
49
         }
46
         }
50
-        return params;
47
+        addView(content, params);
51
     }
48
     }
52
 
49
 
53
 
50
 

+ 1
- 1
android/app/src/main/java/com/reactnativenavigation/screens/ScreenFactory.java View File

12
         if (screenParams.isFragmentScreen()) {
12
         if (screenParams.isFragmentScreen()) {
13
             return new FragmentScreen(activity, screenParams, titleBarBackButtonListener);
13
             return new FragmentScreen(activity, screenParams, titleBarBackButtonListener);
14
         } else if (screenParams.hasTopTabs()) {
14
         } else if (screenParams.hasTopTabs()) {
15
-            return new TabbedScreen(activity, screenParams, titleBarBackButtonListener);
15
+            return new ViewPagerScreen(activity, screenParams, titleBarBackButtonListener);
16
         } else {
16
         } else {
17
             return new SingleScreen(activity, screenParams, titleBarBackButtonListener);
17
             return new SingleScreen(activity, screenParams, titleBarBackButtonListener);
18
         }
18
         }

+ 2
- 9
android/app/src/main/java/com/reactnativenavigation/screens/SingleScreen.java View File

1
 package com.reactnativenavigation.screens;
1
 package com.reactnativenavigation.screens;
2
 
2
 
3
-import android.support.annotation.NonNull;
4
 import android.support.v7.app.AppCompatActivity;
3
 import android.support.v7.app.AppCompatActivity;
5
 
4
 
6
 import com.reactnativenavigation.params.ScreenParams;
5
 import com.reactnativenavigation.params.ScreenParams;
21
     @Override
20
     @Override
22
     protected void createContent() {
21
     protected void createContent() {
23
         contentView = new ContentView(getContext(), screenParams.screenId, screenParams.passProps, screenParams.navigationParams, this);
22
         contentView = new ContentView(getContext(), screenParams.screenId, screenParams.passProps, screenParams.navigationParams, this);
24
-        addView(contentView, addBelowTopBar());
25
-        contentView.init();
26
-    }
27
-
28
-    @NonNull
29
-    private LayoutParams addBelowTopBar() {
30
         LayoutParams params = new LayoutParams(MATCH_PARENT, MATCH_PARENT);
23
         LayoutParams params = new LayoutParams(MATCH_PARENT, MATCH_PARENT);
31
-        if (!screenParams.styleParams.drawUnderTopBar) {
24
+        if (screenParams.styleParams.drawBelowTopBar) {
32
             params.addRule(BELOW, topBar.getId());
25
             params.addRule(BELOW, topBar.getId());
33
         }
26
         }
34
-        return params;
27
+        addView(contentView, params);
35
     }
28
     }
36
 
29
 
37
     @Override
30
     @Override

android/app/src/main/java/com/reactnativenavigation/screens/TabbedScreen.java → android/app/src/main/java/com/reactnativenavigation/screens/ViewPagerScreen.java View File

1
 package com.reactnativenavigation.screens;
1
 package com.reactnativenavigation.screens;
2
 
2
 
3
-import android.support.annotation.NonNull;
4
 import android.support.design.widget.TabLayout;
3
 import android.support.design.widget.TabLayout;
5
 import android.support.v4.view.PagerAdapter;
4
 import android.support.v4.view.PagerAdapter;
6
 import android.support.v4.view.ViewPager;
5
 import android.support.v4.view.ViewPager;
18
 
17
 
19
 import static android.view.ViewGroup.LayoutParams.MATCH_PARENT;
18
 import static android.view.ViewGroup.LayoutParams.MATCH_PARENT;
20
 
19
 
21
-public class TabbedScreen extends Screen {
20
+public class ViewPagerScreen extends Screen {
22
 
21
 
23
     private List<ContentView> contentViews;
22
     private List<ContentView> contentViews;
24
     private ViewPager viewPager;
23
     private ViewPager viewPager;
25
     private ContentViewPagerAdapter adapter;
24
     private ContentViewPagerAdapter adapter;
26
 
25
 
27
-    public TabbedScreen(AppCompatActivity activity, ScreenParams screenParams, TitleBarBackButtonListener backButtonListener) {
26
+    public ViewPagerScreen(AppCompatActivity activity, ScreenParams screenParams, TitleBarBackButtonListener backButtonListener) {
28
         super(activity, screenParams, backButtonListener);
27
         super(activity, screenParams, backButtonListener);
29
     }
28
     }
30
 
29
 
42
                     screenParams.passProps,
41
                     screenParams.passProps,
43
                     screenParams.navigationParams,
42
                     screenParams.navigationParams,
44
                     this);
43
                     this);
45
-            viewPager.addView(contentView, addBelowTopBar());
46
-            contentView.init();
44
+            addContent(contentView);
47
             contentViews.add(contentView);
45
             contentViews.add(contentView);
48
         }
46
         }
49
 
47
 
52
         tabLayout.setupWithViewPager(viewPager);
50
         tabLayout.setupWithViewPager(viewPager);
53
     }
51
     }
54
 
52
 
55
-    @NonNull
56
-    private LayoutParams addBelowTopBar() {
53
+    private void addContent(ContentView contentView) {
57
         LayoutParams params = new LayoutParams(MATCH_PARENT, MATCH_PARENT);
54
         LayoutParams params = new LayoutParams(MATCH_PARENT, MATCH_PARENT);
58
-        if (!screenParams.styleParams.drawUnderTopBar) {
55
+        if (screenParams.styleParams.drawBelowTopBar) {
59
             params.addRule(BELOW, topBar.getId());
56
             params.addRule(BELOW, topBar.getId());
60
         }
57
         }
61
-        return params;
58
+        viewPager.addView(contentView, params);
62
     }
59
     }
63
 
60
 
64
     @Override
61
     @Override

+ 8
- 3
android/app/src/main/java/com/reactnativenavigation/views/ContentView.java View File

21
         this.screenId = screenId;
21
         this.screenId = screenId;
22
         this.passProps = passProps;
22
         this.passProps = passProps;
23
         this.navigationParams = navigationParams;
23
         this.navigationParams = navigationParams;
24
-        scrollViewAttacher = new ScrollViewAttacher(scrollListener);
24
+        if (scrollListener != null) {
25
+            scrollViewAttacher = new ScrollViewAttacher(scrollListener);
26
+        }
27
+        attachToJS();
25
     }
28
     }
26
 
29
 
27
-    public void init() {
30
+    private void attachToJS() {
28
         ReactInstanceManager react = NavigationApplication.instance.getNavigationReactInstance().getReactInstanceManager();
31
         ReactInstanceManager react = NavigationApplication.instance.getNavigationReactInstance().getReactInstanceManager();
29
         startReactApplication(react, screenId, mergePropsAndNavigationParams());
32
         startReactApplication(react, screenId, mergePropsAndNavigationParams());
30
     }
33
     }
32
     @Override
35
     @Override
33
     public void onViewAdded(View child) {
36
     public void onViewAdded(View child) {
34
         super.onViewAdded(child);
37
         super.onViewAdded(child);
35
-        scrollViewAttacher.onViewAdded(child);
38
+        if (scrollViewAttacher != null) {
39
+            scrollViewAttacher.onViewAdded(child);
40
+        }
36
     }
41
     }
37
 
42
 
38
     private Bundle mergePropsAndNavigationParams() {
43
     private Bundle mergePropsAndNavigationParams() {