|
20 | 20 | import android.content.Context; |
21 | 21 | import android.content.res.TypedArray; |
22 | 22 | import android.graphics.Rect; |
| 23 | +import android.os.Bundle; |
23 | 24 | import android.util.AttributeSet; |
24 | 25 | import android.util.Log; |
25 | 26 | import android.view.ContextMenu.ContextMenuInfo; |
@@ -1367,6 +1368,35 @@ public void onInitializeAccessibilityEvent(AccessibilityEvent event) { |
1367 | 1368 | public void onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo info) { |
1368 | 1369 | super.onInitializeAccessibilityNodeInfo(info); |
1369 | 1370 | info.setClassName(Gallery.class.getName()); |
| 1371 | + info.setScrollable(mItemCount > 1); |
| 1372 | + if (mItemCount > 0 && mSelectedPosition < mItemCount - 1) { |
| 1373 | + info.addAction(AccessibilityNodeInfo.ACTION_SCROLL_FORWARD); |
| 1374 | + } |
| 1375 | + if (mItemCount > 0 && mSelectedPosition > 0) { |
| 1376 | + info.addAction(AccessibilityNodeInfo.ACTION_SCROLL_BACKWARD); |
| 1377 | + } |
| 1378 | + } |
| 1379 | + |
| 1380 | + @Override |
| 1381 | + public boolean performAccessibilityAction(int action, Bundle arguments) { |
| 1382 | + if (super.performAccessibilityAction(action, arguments)) { |
| 1383 | + return true; |
| 1384 | + } |
| 1385 | + switch (action) { |
| 1386 | + case AccessibilityNodeInfo.ACTION_SCROLL_FORWARD: { |
| 1387 | + if (mItemCount > 0 && mSelectedPosition < mItemCount - 1) { |
| 1388 | + final int currentChildIndex = mSelectedPosition - mFirstPosition; |
| 1389 | + return scrollToChild(currentChildIndex + 1); |
| 1390 | + } |
| 1391 | + } return false; |
| 1392 | + case AccessibilityNodeInfo.ACTION_SCROLL_BACKWARD: { |
| 1393 | + if (mItemCount > 0 && mSelectedPosition > 0) { |
| 1394 | + final int currentChildIndex = mSelectedPosition - mFirstPosition; |
| 1395 | + return scrollToChild(currentChildIndex - 1); |
| 1396 | + } |
| 1397 | + } return false; |
| 1398 | + } |
| 1399 | + return false; |
1370 | 1400 | } |
1371 | 1401 |
|
1372 | 1402 | /** |
|
0 commit comments