소스 검색

Implement layout.topMargin

This option property lets us set a top margin to a component which can be useful sometimes
when using statusBar.drawBehind.
Guy Carmeli 6 년 전
부모
커밋
c57fcf2c79

+ 5
- 2
lib/android/app/src/main/java/com/reactnativenavigation/presentation/OptionsPresenter.java 파일 보기

4
 import android.graphics.Color;
4
 import android.graphics.Color;
5
 import android.os.Build;
5
 import android.os.Build;
6
 import android.view.View;
6
 import android.view.View;
7
-import android.view.ViewGroup;
7
+import android.view.ViewGroup.MarginLayoutParams;
8
 
8
 
9
 import com.reactnativenavigation.parse.Options;
9
 import com.reactnativenavigation.parse.Options;
10
 import com.reactnativenavigation.parse.OrientationOptions;
10
 import com.reactnativenavigation.parse.OrientationOptions;
40
         if (options.layout.backgroundColor.hasValue()) {
40
         if (options.layout.backgroundColor.hasValue()) {
41
             view.setBackgroundColor(options.layout.backgroundColor.get());
41
             view.setBackgroundColor(options.layout.backgroundColor.get());
42
         }
42
         }
43
+        if (options.layout.topMargin.hasValue()) {
44
+            ((MarginLayoutParams) view.getLayoutParams()).topMargin = options.layout.topMargin.get();
45
+        }
43
     }
46
     }
44
 
47
 
45
     public void onViewBroughtToFront(View view, Options options) {
48
     public void onViewBroughtToFront(View view, Options options) {
86
     }
89
     }
87
 
90
 
88
     private void setDrawBehindStatusBar(View view, StatusBarOptions statusBar) {
91
     private void setDrawBehindStatusBar(View view, StatusBarOptions statusBar) {
89
-        ((ViewGroup.MarginLayoutParams) view.getLayoutParams()).topMargin = statusBar.drawBehind.isFalseOrUndefined() ?
92
+        ((MarginLayoutParams) view.getLayoutParams()).topMargin = statusBar.drawBehind.isFalseOrUndefined() ?
90
                 UiUtils.getStatusBarHeight(activity) :
93
                 UiUtils.getStatusBarHeight(activity) :
91
                 0;
94
                 0;
92
     }
95
     }

+ 1
- 1
lib/android/app/src/main/java/com/reactnativenavigation/presentation/StackOptionsPresenter.java 파일 보기

79
                 topBar.show();
79
                 topBar.show();
80
             }
80
             }
81
         }
81
         }
82
-        if (options.drawBehind.isTrue()) {
82
+        if (options.drawBehind.isTrue() && !componentOptions.layout.topMargin.hasValue()) {
83
             component.drawBehindTopBar();
83
             component.drawBehindTopBar();
84
         } else if (options.drawBehind.isFalseOrUndefined()) {
84
         } else if (options.drawBehind.isFalseOrUndefined()) {
85
             component.drawBelowTopBar(topBar);
85
             component.drawBelowTopBar(topBar);