Merge "Adding accessibility support to the share UI."
This commit is contained in:
committed by
Android (Google) Code Review
commit
1401935b8f
@@ -33,6 +33,8 @@ import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.view.ViewTreeObserver;
|
||||
import android.view.ViewTreeObserver.OnGlobalLayoutListener;
|
||||
import android.view.accessibility.AccessibilityEvent;
|
||||
import android.view.accessibility.AccessibilityManager;
|
||||
import android.widget.ActivityChooserModel.ActivityChooserModelClient;
|
||||
|
||||
/**
|
||||
@@ -168,6 +170,11 @@ public class ActivityChooserView extends ViewGroup implements ActivityChooserMod
|
||||
*/
|
||||
private boolean mIsAttachedToWindow;
|
||||
|
||||
/**
|
||||
* String resource for formatting content description of the default target.
|
||||
*/
|
||||
private int mDefaultActionButtonContentDescription;
|
||||
|
||||
/**
|
||||
* Create a new instance.
|
||||
*
|
||||
@@ -259,7 +266,7 @@ public class ActivityChooserView extends ViewGroup implements ActivityChooserMod
|
||||
*
|
||||
* <strong>Note:</strong> Clients would like to set this drawable
|
||||
* as a clue about the action the chosen activity will perform. For
|
||||
* example, if share activity is to be chosen the drawable should
|
||||
* example, if a share activity is to be chosen the drawable should
|
||||
* give a clue that sharing is to be performed.
|
||||
*
|
||||
* @param drawable The drawable.
|
||||
@@ -268,6 +275,21 @@ public class ActivityChooserView extends ViewGroup implements ActivityChooserMod
|
||||
mExpandActivityOverflowButtonImage.setImageDrawable(drawable);
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the content description for the button that expands the activity
|
||||
* overflow list.
|
||||
*
|
||||
* description as a clue about the action performed by the button.
|
||||
* For example, if a share activity is to be chosen the content
|
||||
* description should be something like "Share with".
|
||||
*
|
||||
* @param resourceId The content description resource id.
|
||||
*/
|
||||
public void setExpandActivityOverflowButtonContentDescription(int resourceId) {
|
||||
CharSequence contentDescription = mContext.getString(resourceId);
|
||||
mExpandActivityOverflowButtonImage.setContentDescription(contentDescription);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the provider hosting this view, if applicable.
|
||||
* @hide Internal use only
|
||||
@@ -329,6 +351,8 @@ public class ActivityChooserView extends ViewGroup implements ActivityChooserMod
|
||||
if (mProvider != null) {
|
||||
mProvider.subUiVisibilityChanged(true);
|
||||
}
|
||||
popupWindow.getListView().setContentDescription(mContext.getString(
|
||||
R.string.activitychooserview_choose_application));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -430,6 +454,20 @@ public class ActivityChooserView extends ViewGroup implements ActivityChooserMod
|
||||
mInitialActivityCount = itemCount;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets a content description of the default action button. This
|
||||
* resource should be a string taking one formatting argument and
|
||||
* will be used for formatting the content description of the button
|
||||
* dynamically as the default target changes. For example, a resource
|
||||
* pointing to the string "share with %1$s" will result in a content
|
||||
* description "share with Bluetooth" for the Bluetooth activity.
|
||||
*
|
||||
* @param resourceId The resource id.
|
||||
*/
|
||||
public void setDefaultActionButtonContentDescription(int resourceId) {
|
||||
mDefaultActionButtonContentDescription = resourceId;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the list popup window which is lazily initialized.
|
||||
*
|
||||
@@ -465,6 +503,12 @@ public class ActivityChooserView extends ViewGroup implements ActivityChooserMod
|
||||
ResolveInfo activity = mAdapter.getDefaultActivity();
|
||||
PackageManager packageManager = mContext.getPackageManager();
|
||||
mDefaultActivityButtonImage.setImageDrawable(activity.loadIcon(packageManager));
|
||||
if (mDefaultActionButtonContentDescription != 0) {
|
||||
CharSequence label = activity.loadLabel(packageManager);
|
||||
String contentDescription = mContext.getString(
|
||||
mDefaultActionButtonContentDescription, label);
|
||||
mDefaultActivityButton.setContentDescription(contentDescription);
|
||||
}
|
||||
} else {
|
||||
mDefaultActivityButton.setVisibility(View.GONE);
|
||||
}
|
||||
|
||||
@@ -171,6 +171,12 @@ public class ShareActionProvider extends ActionProvider {
|
||||
activityChooserView.setExpandActivityOverflowButtonDrawable(drawable);
|
||||
activityChooserView.setProvider(this);
|
||||
|
||||
// Set content description.
|
||||
activityChooserView.setDefaultActionButtonContentDescription(
|
||||
R.string.shareactionprovider_share_with_application);
|
||||
activityChooserView.setExpandActivityOverflowButtonContentDescription(
|
||||
R.string.shareactionprovider_share_with);
|
||||
|
||||
return activityChooserView;
|
||||
}
|
||||
|
||||
|
||||
@@ -3182,6 +3182,16 @@
|
||||
<!-- Description of the Enter button in a KeyboardView. [CHAR LIMIT=NONE] -->
|
||||
<string name="keyboardview_keycode_enter">Enter</string>
|
||||
|
||||
<!-- ActivityChooserView - accessibility support -->
|
||||
<!-- Description of the shwoing of a popup window with activities to choose from. [CHAR LIMIT=NONE] -->
|
||||
<string name="activitychooserview_choose_application">Choose an application</string>
|
||||
|
||||
<!-- ShareActionProvider - accessibility support -->
|
||||
<!-- Description of the choose target button in a ShareActionProvider (share UI). [CHAR LIMIT=NONE] -->
|
||||
<string name="shareactionprovider_share_with">Share with</string>
|
||||
<!-- Description of a share target (both in the list of such or the default share button) in a ShareActionProvider (share UI). [CHAR LIMIT=NONE] -->
|
||||
<string name="shareactionprovider_share_with_application">Share with <xliff:g id="application_name" example="Bluetooth">%s</xliff:g></string>
|
||||
|
||||
<!-- Slide lock screen -->
|
||||
|
||||
<!-- Description of the sliding handle in the Slide unlock screen. [CHAR LIMIT=NONE] -->
|
||||
|
||||
Reference in New Issue
Block a user