[英]How i can override Accessibility className for android.widget.TextView
I want to "talkback" anounces standart TextView as button. 我想“对讲”宣布标准TextView为按钮。 i tried to use this way
我试图用这种方式
public class AccessibilityDelegateButton extends AccessibilityDelegateCompat {
private CharSequence className;
public AccessibilityDelegateButton(CharSequence className) {
super();
this.className =className;
}
@Override
public void onPopulateAccessibilityEvent(View host, AccessibilityEvent event) {
super.onPopulateAccessibilityEvent(host,event);
event.setClassName(className);
}
@Override
public void onInitializeAccessibilityNodeInfo(View host, AccessibilityNodeInfoCompat info) {
super.onInitializeAccessibilityNodeInfo(host,info);
info.setClassName(className);
}
}
and activity: 和活动:
TextView finishButton= new TextView(this);
ViewCompat.setAccessibilityDelegate(finishButton, new AccessibilityDelegateButton(Button.class.getName()));
but it does not work... 但这不起作用...
As stated in the official documentation 如官方文件中所述
On platform versions prior to API 23, delegate methods on views in the android.widget.* package are called before host methods.
在API 23之前的平台版本上,android.widget。*包中视图的委托方法在宿主方法之前被调用。 This prevents certain properties such as class name from being modified
这样可以防止某些属性(例如类名)被修改
Starting in API 23, delegate methods are called after host methods, which all properties to be modified without being overwritten by the host class.
从API 23开始,委托方法在宿主方法之后被调用,所有方法属性都可以被修改而不会被宿主类覆盖。
And that should be the same for AccessibilityDelegateCompat according to the note 根据注释,对于AccessibilityDelegateCompat应该是相同的
Are you on API < 23 maybe? 您是否正在使用API <23? In that case you have to set the class name in
onInitializeAccessibilityNodeInfo
method of View.AccessibilityDelegateCompat
在这种情况下,你必须设置在类名
onInitializeAccessibilityNodeInfo
的方法View.AccessibilityDelegateCompat
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.