Browse Source

Add MenuItem click listener

Guy Carmeli 8 years ago
parent
commit
ced6c9ea8d

+ 9
- 2
android/app/src/main/java/com/reactnativenavigation/layouts/ScreenLayout.java View File

@@ -5,6 +5,7 @@ import android.app.Activity;
5 5
 import android.content.Context;
6 6
 import android.graphics.Color;
7 7
 import android.os.Build;
8
+import android.view.MenuItem;
8 9
 import android.view.Window;
9 10
 import android.widget.LinearLayout;
10 11
 
@@ -17,7 +18,7 @@ import com.reactnativenavigation.views.ScrollDirectionListener;
17 18
 import static android.view.ViewGroup.LayoutParams.MATCH_PARENT;
18 19
 import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT;
19 20
 
20
-public class ScreenLayout extends LinearLayout implements ScrollDirectionListener.OnScrollChanged {
21
+public class ScreenLayout extends LinearLayout implements ScrollDirectionListener.OnScrollChanged, MenuItem.OnMenuItemClickListener {
21 22
 
22 23
     private final ScreenParams screenParams;
23 24
     private ContentView contentView;
@@ -39,7 +40,7 @@ public class ScreenLayout extends LinearLayout implements ScrollDirectionListene
39 40
     }
40 41
 
41 42
     private void addTitleBar() {
42
-        topBar.addTitleBarAndSetButtons(screenParams.buttons);
43
+        topBar.addTitleBarAndSetButtons(screenParams.buttons, this);
43 44
         topBar.setTitle(screenParams.title);
44 45
     }
45 46
 
@@ -102,4 +103,10 @@ public class ScreenLayout extends LinearLayout implements ScrollDirectionListene
102 103
     public void onScrollChanged(ScrollDirectionListener.Direction direction) {
103 104
 
104 105
     }
106
+
107
+    @Override
108
+    public boolean onMenuItemClick(MenuItem item) {
109
+        
110
+        return false;
111
+    }
105 112
 }

+ 3
- 2
android/app/src/main/java/com/reactnativenavigation/layouts/TopBar.java View File

@@ -2,6 +2,7 @@ package com.reactnativenavigation.layouts;
2 2
 
3 3
 import android.content.Context;
4 4
 import android.support.design.widget.AppBarLayout;
5
+import android.view.MenuItem;
5 6
 
6 7
 import com.reactnativenavigation.params.TitleBarButtonParams;
7 8
 import com.reactnativenavigation.views.TitleBar;
@@ -17,10 +18,10 @@ public class TopBar extends AppBarLayout {
17 18
         setFitsSystemWindows(true);
18 19
     }
19 20
 
20
-    public void addTitleBarAndSetButtons(List<TitleBarButtonParams> buttons) {
21
+    public void addTitleBarAndSetButtons(List<TitleBarButtonParams> buttons, MenuItem.OnMenuItemClickListener onTitleBarButtonClickListener) {
21 22
         titleBar = new TitleBar(getContext());
22 23
         addView(titleBar);
23
-        titleBar.setButtons(buttons);
24
+        titleBar.setButtons(buttons, onTitleBarButtonClickListener);
24 25
     }
25 26
 
26 27
     public void setTitleBarVisibility(boolean isHidden) {

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

@@ -3,6 +3,7 @@ package com.reactnativenavigation.views;
3 3
 import android.content.Context;
4 4
 import android.support.v7.widget.Toolbar;
5 5
 import android.view.Menu;
6
+import android.view.MenuItem;
6 7
 
7 8
 import com.reactnativenavigation.animation.HideOnScrollAnimator;
8 9
 import com.reactnativenavigation.params.TitleBarButtonParams;
@@ -18,12 +19,12 @@ public class TitleBar extends Toolbar {
18 19
         super(context);
19 20
     }
20 21
 
21
-    public void setButtons(List<TitleBarButtonParams> buttons) {
22
+    public void setButtons(List<TitleBarButtonParams> buttons, MenuItem.OnMenuItemClickListener onTitleBarButtonClickListener) {
22 23
         Menu menu = getMenu();
23 24
         menu.clear();
24 25
 
25 26
         for (int i = 0; i < buttons.size(); i++) {
26
-            final TitleBarButton button = new TitleBarButton(menu, this, buttons.get(i));
27
+            final TitleBarButton button = new TitleBarButton(menu, this, buttons.get(i), onTitleBarButtonClickListener);
27 28
             // Add button in reverse order because in iOS index 0 starts at right
28 29
             final int index = buttons.size() - i - 1;
29 30
             button.addToMenu(index);

+ 4
- 1
android/app/src/main/java/com/reactnativenavigation/views/TitleBarButton.java View File

@@ -17,11 +17,13 @@ public class TitleBarButton {
17 17
     private final Menu menu;
18 18
     private final View parent;
19 19
     private TitleBarButtonParams buttonParams;
20
+    private MenuItem.OnMenuItemClickListener onMenuItemClickListener;
20 21
 
21
-    public TitleBarButton(Menu menu, View parent, TitleBarButtonParams buttonParams) {
22
+    public TitleBarButton(Menu menu, View parent, TitleBarButtonParams buttonParams, MenuItem.OnMenuItemClickListener onMenuItemClickListener) {
22 23
         this.menu = menu;
23 24
         this.parent = parent;
24 25
         this.buttonParams = buttonParams;
26
+        this.onMenuItemClickListener = onMenuItemClickListener;
25 27
     }
26 28
 
27 29
     public MenuItem addToMenu(int index) {
@@ -30,6 +32,7 @@ public class TitleBarButton {
30 32
         item.setEnabled(buttonParams.enabled);
31 33
         setIcon(item);
32 34
         setColor();
35
+        item.setOnMenuItemClickListener(onMenuItemClickListener);
33 36
         return item;
34 37
     }
35 38