Ver código fonte

Add MenuItem click listener

Guy Carmeli 8 anos atrás
pai
commit
ced6c9ea8d

+ 9
- 2
android/app/src/main/java/com/reactnativenavigation/layouts/ScreenLayout.java Ver arquivo

5
 import android.content.Context;
5
 import android.content.Context;
6
 import android.graphics.Color;
6
 import android.graphics.Color;
7
 import android.os.Build;
7
 import android.os.Build;
8
+import android.view.MenuItem;
8
 import android.view.Window;
9
 import android.view.Window;
9
 import android.widget.LinearLayout;
10
 import android.widget.LinearLayout;
10
 
11
 
17
 import static android.view.ViewGroup.LayoutParams.MATCH_PARENT;
18
 import static android.view.ViewGroup.LayoutParams.MATCH_PARENT;
18
 import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT;
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
     private final ScreenParams screenParams;
23
     private final ScreenParams screenParams;
23
     private ContentView contentView;
24
     private ContentView contentView;
39
     }
40
     }
40
 
41
 
41
     private void addTitleBar() {
42
     private void addTitleBar() {
42
-        topBar.addTitleBarAndSetButtons(screenParams.buttons);
43
+        topBar.addTitleBarAndSetButtons(screenParams.buttons, this);
43
         topBar.setTitle(screenParams.title);
44
         topBar.setTitle(screenParams.title);
44
     }
45
     }
45
 
46
 
102
     public void onScrollChanged(ScrollDirectionListener.Direction direction) {
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 Ver arquivo

2
 
2
 
3
 import android.content.Context;
3
 import android.content.Context;
4
 import android.support.design.widget.AppBarLayout;
4
 import android.support.design.widget.AppBarLayout;
5
+import android.view.MenuItem;
5
 
6
 
6
 import com.reactnativenavigation.params.TitleBarButtonParams;
7
 import com.reactnativenavigation.params.TitleBarButtonParams;
7
 import com.reactnativenavigation.views.TitleBar;
8
 import com.reactnativenavigation.views.TitleBar;
17
         setFitsSystemWindows(true);
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
         titleBar = new TitleBar(getContext());
22
         titleBar = new TitleBar(getContext());
22
         addView(titleBar);
23
         addView(titleBar);
23
-        titleBar.setButtons(buttons);
24
+        titleBar.setButtons(buttons, onTitleBarButtonClickListener);
24
     }
25
     }
25
 
26
 
26
     public void setTitleBarVisibility(boolean isHidden) {
27
     public void setTitleBarVisibility(boolean isHidden) {

+ 3
- 2
android/app/src/main/java/com/reactnativenavigation/views/TitleBar.java Ver arquivo

3
 import android.content.Context;
3
 import android.content.Context;
4
 import android.support.v7.widget.Toolbar;
4
 import android.support.v7.widget.Toolbar;
5
 import android.view.Menu;
5
 import android.view.Menu;
6
+import android.view.MenuItem;
6
 
7
 
7
 import com.reactnativenavigation.animation.HideOnScrollAnimator;
8
 import com.reactnativenavigation.animation.HideOnScrollAnimator;
8
 import com.reactnativenavigation.params.TitleBarButtonParams;
9
 import com.reactnativenavigation.params.TitleBarButtonParams;
18
         super(context);
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
         Menu menu = getMenu();
23
         Menu menu = getMenu();
23
         menu.clear();
24
         menu.clear();
24
 
25
 
25
         for (int i = 0; i < buttons.size(); i++) {
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
             // Add button in reverse order because in iOS index 0 starts at right
28
             // Add button in reverse order because in iOS index 0 starts at right
28
             final int index = buttons.size() - i - 1;
29
             final int index = buttons.size() - i - 1;
29
             button.addToMenu(index);
30
             button.addToMenu(index);

+ 4
- 1
android/app/src/main/java/com/reactnativenavigation/views/TitleBarButton.java Ver arquivo

17
     private final Menu menu;
17
     private final Menu menu;
18
     private final View parent;
18
     private final View parent;
19
     private TitleBarButtonParams buttonParams;
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
         this.menu = menu;
23
         this.menu = menu;
23
         this.parent = parent;
24
         this.parent = parent;
24
         this.buttonParams = buttonParams;
25
         this.buttonParams = buttonParams;
26
+        this.onMenuItemClickListener = onMenuItemClickListener;
25
     }
27
     }
26
 
28
 
27
     public MenuItem addToMenu(int index) {
29
     public MenuItem addToMenu(int index) {
30
         item.setEnabled(buttonParams.enabled);
32
         item.setEnabled(buttonParams.enabled);
31
         setIcon(item);
33
         setIcon(item);
32
         setColor();
34
         setColor();
35
+        item.setOnMenuItemClickListener(onMenuItemClickListener);
33
         return item;
36
         return item;
34
     }
37
     }
35
 
38