@@ -59,7 +59,7 @@ public class NavigationBarView extends LinearLayout {
5959 int mBarSize ;
6060 boolean mVertical ;
6161
62- boolean mHidden , mLowProfile ;
62+ boolean mHidden , mLowProfile , mShowMenu ;
6363 int mDisabledFlags = 0 ;
6464
6565 public View getRecentsButton () {
@@ -91,6 +91,7 @@ public NavigationBarView(Context context, AttributeSet attrs) {
9191 final Resources res = mContext .getResources ();
9292 mBarSize = res .getDimensionPixelSize (R .dimen .navigation_bar_size );
9393 mVertical = false ;
94+ mShowMenu = false ;
9495 }
9596
9697 View .OnTouchListener mLightsOutListener = new View .OnTouchListener () {
@@ -126,7 +127,23 @@ public void setDisabledFlags(int disabledFlags, boolean force) {
126127 getBackButton () .setVisibility (disableBack ? View .INVISIBLE : View .VISIBLE );
127128 getHomeButton () .setVisibility (disableNavigation ? View .INVISIBLE : View .VISIBLE );
128129 getRecentsButton ().setVisibility (disableNavigation ? View .INVISIBLE : View .VISIBLE );
129- getMenuButton () .setVisibility (disableNavigation ? View .INVISIBLE : View .VISIBLE );
130+
131+ getMenuButton () .setVisibility ((disableNavigation || !mShowMenu )
132+ ? View .INVISIBLE : View .VISIBLE );
133+ }
134+
135+ public void setMenuVisibility (final boolean show ) {
136+ setMenuVisibility (show , false );
137+ }
138+
139+ public void setMenuVisibility (final boolean show , final boolean force ) {
140+ if (!force && mShowMenu == show ) return ;
141+
142+ mShowMenu = show ;
143+
144+ getMenuButton ().setVisibility (
145+ (0 != (mDisabledFlags & View .STATUS_BAR_DISABLE_NAVIGATION ) || !mShowMenu )
146+ ? View .INVISIBLE : View .VISIBLE );
130147 }
131148
132149 public void setLowProfile (final boolean lightsOut ) {
@@ -256,6 +273,7 @@ public void reorient() {
256273 // force the low profile & disabled states into compliance
257274 setLowProfile (mLowProfile , false , true /* force */ );
258275 setDisabledFlags (mDisabledFlags , true /* force */ );
276+ setMenuVisibility (mShowMenu , true /* force */ );
259277
260278 if (DEBUG_DEADZONE ) {
261279 mCurrentView .findViewById (R .id .deadzone ).setBackgroundColor (0x808080FF );
0 commit comments