Kaynağa Gözat

Conor overflow button

Guy Carmeli 8 yıl önce
ebeveyn
işleme
084ea2ea84

+ 25
- 0
android/app/src/main/java/com/reactnativenavigation/views/TitleBar.java Dosyayı Görüntüle

1
 package com.reactnativenavigation.views;
1
 package com.reactnativenavigation.views;
2
 
2
 
3
 import android.content.Context;
3
 import android.content.Context;
4
+import android.graphics.drawable.Drawable;
5
+import android.support.v7.widget.ActionMenuView;
4
 import android.support.v7.widget.Toolbar;
6
 import android.support.v7.widget.Toolbar;
5
 import android.view.Menu;
7
 import android.view.Menu;
8
+import android.view.View;
6
 
9
 
7
 import com.reactnativenavigation.animation.VisibilityAnimator;
10
 import com.reactnativenavigation.animation.VisibilityAnimator;
8
 import com.reactnativenavigation.params.StyleParams;
11
 import com.reactnativenavigation.params.StyleParams;
9
 import com.reactnativenavigation.params.TitleBarButtonParams;
12
 import com.reactnativenavigation.params.TitleBarButtonParams;
10
 import com.reactnativenavigation.params.TitleBarLeftButtonParams;
13
 import com.reactnativenavigation.params.TitleBarLeftButtonParams;
14
+import com.reactnativenavigation.utils.ViewUtils;
11
 
15
 
12
 import java.util.List;
16
 import java.util.List;
13
 
17
 
16
     private boolean hideOnScroll = false;
20
     private boolean hideOnScroll = false;
17
     private VisibilityAnimator visibilityAnimator;
21
     private VisibilityAnimator visibilityAnimator;
18
     private LeftButton leftButton;
22
     private LeftButton leftButton;
23
+    private ActionMenuView actionMenuView;
19
 
24
 
20
     public TitleBar(Context context) {
25
     public TitleBar(Context context) {
21
         super(context);
26
         super(context);
22
     }
27
     }
23
 
28
 
29
+    @Override
30
+    public void onViewAdded(View child) {
31
+        super.onViewAdded(child);
32
+        if (child instanceof ActionMenuView) {
33
+            actionMenuView = (ActionMenuView) child;
34
+        }
35
+    }
36
+
24
     public void setRightButtons(List<TitleBarButtonParams> rightButtons, String navigatorEventId) {
37
     public void setRightButtons(List<TitleBarButtonParams> rightButtons, String navigatorEventId) {
25
         Menu menu = getMenu();
38
         Menu menu = getMenu();
26
         menu.clear();
39
         menu.clear();
44
     public void setStyle(StyleParams params) {
57
     public void setStyle(StyleParams params) {
45
         setVisibility(params.titleBarHidden ? GONE : VISIBLE);
58
         setVisibility(params.titleBarHidden ? GONE : VISIBLE);
46
         setTitleTextColor(params);
59
         setTitleTextColor(params);
60
+        colorOverflowButton(params);
61
+    }
62
+
63
+    private void colorOverflowButton(StyleParams params) {
64
+        Drawable overflowIcon = actionMenuView.getOverflowIcon();
65
+        if (shouldColorOverflowButton(params, overflowIcon)) {
66
+            ViewUtils.tintDrawable(overflowIcon, params.titleBarButtonColor.getColor(), true);
67
+        }
68
+    }
69
+
70
+    private boolean shouldColorOverflowButton(StyleParams params, Drawable overflowIcon) {
71
+        return overflowIcon != null && params.titleBarButtonColor.hasColor();
47
     }
72
     }
48
 
73
 
49
     private void setTitleTextColor(StyleParams params) {
74
     private void setTitleTextColor(StyleParams params) {

+ 1
- 2
android/app/src/main/java/com/reactnativenavigation/views/TopBar.java Dosyayı Görüntüle

14
 public class TopBar extends AppBarLayout {
14
 public class TopBar extends AppBarLayout {
15
 
15
 
16
     private TitleBar titleBar;
16
     private TitleBar titleBar;
17
-    private TabLayout tabLayout;
18
 
17
 
19
     public TopBar(Context context) {
18
     public TopBar(Context context) {
20
         super(context);
19
         super(context);
48
     }
47
     }
49
 
48
 
50
     public TabLayout initTabs() {
49
     public TabLayout initTabs() {
51
-        tabLayout = new TabLayout(getContext());
50
+        TabLayout tabLayout = new TabLayout(getContext());
52
         addView(tabLayout);
51
         addView(tabLayout);
53
         return tabLayout;
52
         return tabLayout;
54
     }
53
     }