Hide navigation buttons when they are DISABLEd.
Back is hidden by DISABLE_BACK; Home, Recents, and Menu are hidden by DISABLE_NAVIGATION. Bug: 5261576 Bug: 5284740 (confusion about visible inactive icons) Change-Id: I410c133b737cc11d61bac0318dc24458353ee7b3
This commit is contained in:
@@ -38,6 +38,7 @@
|
||||
android:clipChildren="false"
|
||||
android:clipToPadding="false"
|
||||
android:id="@+id/nav_buttons"
|
||||
android:animateLayoutChanges="true"
|
||||
>
|
||||
|
||||
<!-- navigation controls -->
|
||||
@@ -165,6 +166,7 @@
|
||||
android:clipChildren="false"
|
||||
android:clipToPadding="false"
|
||||
android:id="@+id/nav_buttons"
|
||||
android:animateLayoutChanges="true"
|
||||
>
|
||||
|
||||
<!-- navigation controls -->
|
||||
|
||||
@@ -60,7 +60,6 @@ public class NavigationBarView extends LinearLayout {
|
||||
boolean mVertical;
|
||||
|
||||
boolean mHidden, mLowProfile;
|
||||
boolean mEnabled = true;
|
||||
|
||||
public View getRecentsButton() {
|
||||
return mCurrentView.findViewById(R.id.recent_apps);
|
||||
@@ -93,11 +92,6 @@ public class NavigationBarView extends LinearLayout {
|
||||
mVertical = false;
|
||||
}
|
||||
|
||||
public void setEnabled(final boolean enable) {
|
||||
mEnabled = enable;
|
||||
mCurrentView.setVisibility(enable ? View.VISIBLE : View.INVISIBLE);
|
||||
}
|
||||
|
||||
View.OnTouchListener mLightsOutListener = new View.OnTouchListener() {
|
||||
@Override
|
||||
public boolean onTouch(View v, MotionEvent ev) {
|
||||
@@ -116,6 +110,16 @@ public class NavigationBarView extends LinearLayout {
|
||||
}
|
||||
};
|
||||
|
||||
public void setNavigationVisibility(int disabledFlags) {
|
||||
boolean disableNavigation = ((disabledFlags & View.STATUS_BAR_DISABLE_NAVIGATION) != 0);
|
||||
boolean disableBack = ((disabledFlags & View.STATUS_BAR_DISABLE_BACK) != 0);
|
||||
|
||||
getBackButton() .setVisibility(disableBack ? View.INVISIBLE : View.VISIBLE);
|
||||
getHomeButton() .setVisibility(disableNavigation ? View.INVISIBLE : View.VISIBLE);
|
||||
getRecentsButton().setVisibility(disableNavigation ? View.INVISIBLE : View.VISIBLE);
|
||||
getMenuButton() .setVisibility(disableNavigation ? View.INVISIBLE : View.VISIBLE);
|
||||
}
|
||||
|
||||
public void setLowProfile(final boolean lightsOut) {
|
||||
setLowProfile(lightsOut, true);
|
||||
}
|
||||
|
||||
@@ -297,7 +297,7 @@ public class PhoneStatusBar extends StatusBar {
|
||||
mNavigationBarView =
|
||||
(NavigationBarView) View.inflate(context, R.layout.navigation_bar, null);
|
||||
|
||||
mNavigationBarView.setEnabled((mDisabled & StatusBarManager.DISABLE_NAVIGATION) == 0);
|
||||
setNavigationVisibility(mDisabled);
|
||||
|
||||
sb.setOnSystemUiVisibilityChangeListener(
|
||||
new View.OnSystemUiVisibilityChangeListener() {
|
||||
@@ -1129,15 +1129,7 @@ public class PhoneStatusBar extends StatusBar {
|
||||
Slog.i(TAG, "DISABLE_NAVIGATION: " + (disableNavigation ? "yes" : "no"));
|
||||
|
||||
if (mNavigationBarView != null) {
|
||||
if (disableNavigation && disableBack) {
|
||||
mNavigationBarView.setEnabled(false);
|
||||
} else {
|
||||
mNavigationBarView.getBackButton().setEnabled(!disableBack);
|
||||
mNavigationBarView.getHomeButton().setEnabled(!disableNavigation);
|
||||
mNavigationBarView.getRecentsButton().setEnabled(!disableNavigation);
|
||||
|
||||
mNavigationBarView.setEnabled(true);
|
||||
}
|
||||
mNavigationBarView.setNavigationVisibility(visibility);
|
||||
}
|
||||
|
||||
if (disableNavigation) {
|
||||
|
||||
@@ -114,7 +114,7 @@ public class StatusBarTest extends TestActivity
|
||||
// v.setSystemUiVisibility(View.SYSTEM_UI_FLAG_VISIBLE);
|
||||
// }
|
||||
// },
|
||||
new Test("DISABLE_NAVIGATION") {
|
||||
new Test("systemUiVisibility: STATUS_BAR_DISABLE_NAVIGATION") {
|
||||
public void run() {
|
||||
mListView.setSystemUiVisibility(View.STATUS_BAR_DISABLE_NAVIGATION);
|
||||
}
|
||||
@@ -232,6 +232,11 @@ public class StatusBarTest extends TestActivity
|
||||
mStatusBarManager.disable(StatusBarManager.DISABLE_NAVIGATION);
|
||||
}
|
||||
},
|
||||
new Test("Disable Back") {
|
||||
public void run() {
|
||||
mStatusBarManager.disable(StatusBarManager.DISABLE_BACK);
|
||||
}
|
||||
},
|
||||
new Test("Disable Clock") {
|
||||
public void run() {
|
||||
mStatusBarManager.disable(StatusBarManager.DISABLE_CLOCK);
|
||||
|
||||
Reference in New Issue
Block a user