Merge "Automatically supply a content description for ToolbarActionBar nav" into lmp-dev
This commit is contained in:
@@ -248,11 +248,12 @@ public class Toolbar extends ViewGroup {
|
||||
final Drawable navIcon = a.getDrawable(R.styleable.Toolbar_navigationIcon);
|
||||
if (navIcon != null) {
|
||||
setNavigationIcon(navIcon);
|
||||
final CharSequence navDesc = a.getText(
|
||||
R.styleable.Toolbar_navigationContentDescription);
|
||||
if (!TextUtils.isEmpty(navDesc)) {
|
||||
setNavigationContentDescription(navDesc);
|
||||
}
|
||||
}
|
||||
|
||||
final CharSequence navDesc = a.getText(
|
||||
R.styleable.Toolbar_navigationContentDescription);
|
||||
if (!TextUtils.isEmpty(navDesc)) {
|
||||
setNavigationContentDescription(navDesc);
|
||||
}
|
||||
a.recycle();
|
||||
}
|
||||
|
||||
@@ -22,6 +22,7 @@ import android.app.ActionBar;
|
||||
import android.content.Context;
|
||||
import android.content.res.Configuration;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.text.TextUtils;
|
||||
import android.view.ActionMode;
|
||||
import android.view.KeyEvent;
|
||||
import android.view.LayoutInflater;
|
||||
@@ -32,6 +33,7 @@ import android.view.Window;
|
||||
import android.view.WindowCallbackWrapper;
|
||||
import android.widget.SpinnerAdapter;
|
||||
import android.widget.Toolbar;
|
||||
import com.android.internal.R;
|
||||
import com.android.internal.view.menu.MenuBuilder;
|
||||
import com.android.internal.widget.DecorToolbar;
|
||||
import com.android.internal.widget.ToolbarWidgetWrapper;
|
||||
@@ -44,6 +46,8 @@ public class ToolbarActionBar extends ActionBar {
|
||||
private boolean mToolbarMenuPrepared;
|
||||
private Window.Callback mWindowCallback;
|
||||
|
||||
private CharSequence mHomeDescription;
|
||||
|
||||
private boolean mLastMenuVisibility;
|
||||
private ArrayList<OnMenuVisibilityListener> mMenuVisibilityListeners =
|
||||
new ArrayList<OnMenuVisibilityListener>();
|
||||
@@ -70,6 +74,8 @@ public class ToolbarActionBar extends ActionBar {
|
||||
mDecorToolbar.setWindowCallback(mWindowCallback);
|
||||
toolbar.setOnMenuItemClickListener(mMenuClicker);
|
||||
mDecorToolbar.setWindowTitle(title);
|
||||
mHomeDescription = mToolbar.getNavigationContentDescription();
|
||||
updateNavDescription();
|
||||
}
|
||||
|
||||
public Window.Callback getWrappedWindowCallback() {
|
||||
@@ -161,6 +167,7 @@ public class ToolbarActionBar extends ActionBar {
|
||||
@Override
|
||||
public void setHomeActionContentDescription(CharSequence description) {
|
||||
mToolbar.setNavigationContentDescription(description);
|
||||
mHomeDescription = description;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -171,6 +178,7 @@ public class ToolbarActionBar extends ActionBar {
|
||||
@Override
|
||||
public void setHomeActionContentDescription(int resId) {
|
||||
mToolbar.setNavigationContentDescription(resId);
|
||||
mHomeDescription = mToolbar.getNavigationContentDescription();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -247,8 +255,22 @@ public class ToolbarActionBar extends ActionBar {
|
||||
|
||||
@Override
|
||||
public void setDisplayOptions(@DisplayOptions int options, @DisplayOptions int mask) {
|
||||
mDecorToolbar.setDisplayOptions((options & mask) |
|
||||
mDecorToolbar.getDisplayOptions() & ~mask);
|
||||
final int currentOptions = mDecorToolbar.getDisplayOptions();
|
||||
final int changed = (options ^ currentOptions) & mask;
|
||||
mDecorToolbar.setDisplayOptions(options & mask | currentOptions & ~mask);
|
||||
if ((changed & ActionBar.DISPLAY_HOME_AS_UP) != 0) {
|
||||
updateNavDescription();
|
||||
}
|
||||
}
|
||||
|
||||
private void updateNavDescription() {
|
||||
if ((mDecorToolbar.getDisplayOptions() & ActionBar.DISPLAY_HOME_AS_UP) != 0) {
|
||||
if (TextUtils.isEmpty(mHomeDescription)) {
|
||||
mToolbar.setNavigationContentDescription(R.string.action_bar_up_description);
|
||||
} else {
|
||||
mToolbar.setNavigationContentDescription(mHomeDescription);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -41,6 +41,7 @@ This is an optimized layout for a screen with a toolbar enabled.
|
||||
android:id="@+id/action_bar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:navigationContentDescription="@string/action_bar_up_description"
|
||||
style="?attr/toolbarStyle" />
|
||||
<com.android.internal.widget.ActionBarContextView
|
||||
android:id="@+id/action_context_bar"
|
||||
|
||||
Reference in New Issue
Block a user