如何解决Android TalkBack:当出现配置了间隔的 TimePicker 时,如何更改 TalkBack 朗读的内容?
首先,我单击一个按钮,显示一个 DialogFragment,其中包含一个带有 TimePicker 的 LinearLayout,处于微调模式,间隔为 15 分钟:
public void setIntervals() {
int numValues = 60 / interval;
String[] displayedValues = new String[numValues];
for (int i = 0; i < numValues; i++) {
displayedValues[i] = FORMATTER.format(i * interval);
}
View minute = timePicker.findViewById(Resources.getSystem().getIdentifier("minute","id","android"));
if ((minute != null) && (minute instanceof NumberPicker)) {
minutePicker = (NumberPicker) minute;
minutePicker.setMinValue(0);
minutePicker.setMaxValue(numValues - 1);
minutePicker.setdisplayedValues(displayedValues);
}
}
当我激活 TalkBack 并打开对话框时,TalkBack 会读取例如“10:1”而不是“10:15”。每次我更改分钟值时都会出现同样的问题。我通过将 AccesibilityDelegate 分配给 TimePicker 的微小更改解决了这个问题。但是对话框打开时问题依旧。
public class TimePickerAccesibilityDelegate extends AccessibilityDelegateCompat {
public int hour;
public int minute;
public boolean timeChanged = false;
@Override
public void onInitializeAccessibilityEvent(View host,AccessibilityEvent event) {
super.onInitializeAccessibilityEvent(host,event);
updateEventContentDescription(event);
}
public void setTimeChanged(boolean isChanged) {
timeChanged = isChanged;
}
public void updateEventContentDescription(AccessibilityEvent event){
ArrayList<Integer> eventTypes;
eventTypes = new ArrayList<>(Arrays.asList(AccessibilityEvent.TYPE_VIEW_SELECTED,AccessibilityEvent.TYPE_WINDOW_CONTENT_CHANGED,AccessibilityEvent.TYPE_ANNOUNCEMENT,AccessibilityEvent.TYPE_VIEW_FOCUSED));
if ((timeChanged) && eventTypes.contains(event.getEventType())) {
event.setContentDescription(hour + ":" + FORMATTER.format(minute));
setTimeChanged(false);
}
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。