Browse Source

Color overflow button

Overflow button color is based of `options.topBar.rightButtonColor`, this might change in the future.
Guy Carmeli 6 years ago
parent
commit
cf2c6da617

+ 4
- 0
lib/android/app/src/main/java/com/reactnativenavigation/presentation/StackPresenter.java View File

264
         if (options.buttons.back.visible.isTrue() && !options.buttons.hasLeftButtons()) {
264
         if (options.buttons.back.visible.isTrue() && !options.buttons.hasLeftButtons()) {
265
             topBar.setBackButton(createButtonController(options.buttons.back));
265
             topBar.setBackButton(createButtonController(options.buttons.back));
266
         }
266
         }
267
+
268
+        topBar.setOverflowButtonColor(options.rightButtonColor.get(Color.BLACK));
267
     }
269
     }
268
 
270
 
269
     private List<TitleBarButtonController> getOrCreateButtonControllers(@Nullable Map<String, TitleBarButtonController> currentButtons, @Nullable List<Button> buttons) {
271
     private List<TitleBarButtonController> getOrCreateButtonControllers(@Nullable Map<String, TitleBarButtonController> currentButtons, @Nullable List<Button> buttons) {
339
         if (buttons.right != null) topBar.setRightButtons(rightButtonControllers);
341
         if (buttons.right != null) topBar.setRightButtons(rightButtonControllers);
340
         if (buttons.left != null) topBar.setLeftButtons(leftButtonControllers);
342
         if (buttons.left != null) topBar.setLeftButtons(leftButtonControllers);
341
         if (buttons.back.hasValue()) topBar.setBackButton(createButtonController(buttons.back));
343
         if (buttons.back.hasValue()) topBar.setBackButton(createButtonController(buttons.back));
344
+
345
+        if (options.rightButtonColor.hasValue()) topBar.setOverflowButtonColor(options.rightButtonColor.get());
342
     }
346
     }
343
 
347
 
344
     @Nullable
348
     @Nullable

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

2
 
2
 
3
 import android.annotation.SuppressLint;
3
 import android.annotation.SuppressLint;
4
 import android.content.Context;
4
 import android.content.Context;
5
+import android.graphics.PorterDuff;
6
+import android.graphics.PorterDuffColorFilter;
5
 import android.graphics.Typeface;
7
 import android.graphics.Typeface;
8
+import android.graphics.drawable.Drawable;
9
+import android.support.v7.widget.ActionMenuView;
6
 import android.support.v7.widget.Toolbar;
10
 import android.support.v7.widget.Toolbar;
7
 import android.util.Log;
11
 import android.util.Log;
8
 import android.view.View;
12
 import android.view.View;
184
         lp.height = pixelHeight;
188
         lp.height = pixelHeight;
185
         setLayoutParams(lp);
189
         setLayoutParams(lp);
186
     }
190
     }
191
+
192
+    public void setOverflowButtonColor(int color) {
193
+        ActionMenuView actionMenuView = ViewUtils.findChildByClass(this, ActionMenuView.class);
194
+        if (actionMenuView != null) {
195
+            Drawable overflowIcon = actionMenuView.getOverflowIcon();
196
+            if (overflowIcon != null) {
197
+                overflowIcon.setColorFilter(new PorterDuffColorFilter(color, PorterDuff.Mode.SRC_IN));
198
+            }
199
+        }
200
+    }
187
 }
201
 }

+ 4
- 0
lib/android/app/src/main/java/com/reactnativenavigation/views/topbar/TopBar.java View File

314
     public void setBorderColor(int color) {
314
     public void setBorderColor(int color) {
315
         border.setBackgroundColor(color);
315
         border.setBackgroundColor(color);
316
     }
316
     }
317
+
318
+    public void setOverflowButtonColor(int color) {
319
+        titleBar.setOverflowButtonColor(color);
320
+    }
317
 }
321
 }