Bug 5249855 - Add support for content descriptions on action bar tabs

Add API support for supplying content descriptions on action bar tabs.
This helps accessibility in cases where no title text is shown.

Change-Id: I8fdc4c2f2b279871b9f24b0b16e5167879b22741
This commit is contained in:
Adam Powell
2011-09-06 21:22:22 -07:00
parent 1d124d5037
commit 94e56ef3b8
4 changed files with 56 additions and 0 deletions

View File

@ -2487,12 +2487,15 @@ package android.app {
public static abstract class ActionBar.Tab {
ctor public ActionBar.Tab();
method public abstract java.lang.CharSequence getContentDescription();
method public abstract android.view.View getCustomView();
method public abstract android.graphics.drawable.Drawable getIcon();
method public abstract int getPosition();
method public abstract java.lang.Object getTag();
method public abstract java.lang.CharSequence getText();
method public abstract void select();
method public abstract android.app.ActionBar.Tab setContentDescription(int);
method public abstract android.app.ActionBar.Tab setContentDescription(java.lang.CharSequence);
method public abstract android.app.ActionBar.Tab setCustomView(android.view.View);
method public abstract android.app.ActionBar.Tab setCustomView(int);
method public abstract android.app.ActionBar.Tab setIcon(android.graphics.drawable.Drawable);

View File

@ -790,6 +790,37 @@ public abstract class ActionBar {
* Select this tab. Only valid if the tab has been added to the action bar.
*/
public abstract void select();
/**
* Set a description of this tab's content for use in accessibility support.
* If no content description is provided the title will be used.
*
* @param resId A resource ID referring to the description text
* @return The current instance for call chaining
* @see #setContentDescription(CharSequence)
* @see #getContentDescription()
*/
public abstract Tab setContentDescription(int resId);
/**
* Set a description of this tab's content for use in accessibility support.
* If no content description is provided the title will be used.
*
* @param contentDesc Description of this tab's content
* @return The current instance for call chaining
* @see #setContentDescription(int)
* @see #getContentDescription()
*/
public abstract Tab setContentDescription(CharSequence contentDesc);
/**
* Gets a brief description of this tab's content for use in accessibility support.
*
* @return Description of this tab's content
* @see #setContentDescription(CharSequence)
* @see #setContentDescription(int)
*/
public abstract CharSequence getContentDescription();
}
/**

View File

@ -783,6 +783,7 @@ public class ActionBarImpl extends ActionBar {
private Object mTag;
private Drawable mIcon;
private CharSequence mText;
private CharSequence mContentDesc;
private int mPosition = -1;
private View mCustomView;
@ -878,6 +879,25 @@ public class ActionBarImpl extends ActionBar {
public void select() {
selectTab(this);
}
@Override
public Tab setContentDescription(int resId) {
return setContentDescription(mContext.getResources().getText(resId));
}
@Override
public Tab setContentDescription(CharSequence contentDesc) {
mContentDesc = contentDesc;
if (mPosition >= 0) {
mTabScrollView.updateTab(mPosition);
}
return this;
}
@Override
public CharSequence getContentDescription() {
return mContentDesc;
}
}
@Override

View File

@ -443,6 +443,8 @@ public class ScrollingTabContainerView extends HorizontalScrollView
mTextView.setVisibility(GONE);
mTextView.setText(null);
}
setContentDescription(tab.getContentDescription());
}
}