要实现Android NestedScrollView中TalkBack只导航到屏幕上可见的项目,并跳过滚动条下方的元素直接到达底部选项卡,可以使用以下方法:
import androidx.core.view.AccessibilityDelegateCompat;
import androidx.core.view.ViewCompat;
import androidx.core.view.accessibility.AccessibilityNodeInfoCompat;
import androidx.core.widget.NestedScrollView;
public class CustomAccessibilityDelegate extends AccessibilityDelegateCompat {
@Override
public boolean performAccessibilityAction(View host, int action, Bundle args) {
if (action == AccessibilityNodeInfoCompat.ACTION_SCROLL_FORWARD) {
NestedScrollView nestedScrollView = (NestedScrollView) host;
int visibleChildCount = nestedScrollView.getChildCount();
if (visibleChildCount > 0) {
View lastVisibleChild = nestedScrollView.getChildAt(visibleChildCount - 1);
if (lastVisibleChild != null) {
ViewCompat.AccessibilityDelegateCompat.super.performAccessibilityAction(lastVisibleChild, action, args);
return true;
}
}
}
return ViewCompat.AccessibilityDelegateCompat.super.performAccessibilityAction(host, action, args);
}
}
NestedScrollView nestedScrollView = findViewById(R.id.nestedScrollView);
CustomAccessibilityDelegate accessibilityDelegate = new CustomAccessibilityDelegate();
ViewCompat.setAccessibilityDelegate(nestedScrollView, accessibilityDelegate);
通过以上步骤,TalkBack将只导航到屏幕上可见的项目,并跳过滚动条下方的元素直接到达底部选项卡。请根据自己的需求进行适当调整和修改。