简体   繁体   English

我如何覆盖android.widget.TextView的Accessibility className

[英]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.

相关问题 来自android的java.lang.classcastexception android.widget.textview错误,但我看不到 - java.lang.classcastexception android.widget.textview error from android yet I can't see how android.widget.TextView与TextView - android.widget.TextView vs TextView 强制转换android.widget.TextView - cast exception android.widget.TextView ConstraintLayout 不能转换为 android.widget.TextView - ConstraintLayout cannot be cast to android.widget.TextView android.widget.textview无法转换为android.widget.radiogroup - android.widget.textview cannot be cast to android.widget.radiogroup android.widget.TextView无法转换为android.widget.EditText 5 - android.widget.TextView cannot be cast to android.widget.EditText 5 java.lang.ClassCastException:android.widget.TextView - java.lang.ClassCastException: android.widget.TextView 运算符“ &lt;”不能应用于android.widget.textview int - operator '<' cannot be applied to android.widget.textview int 我不断收到错误 java.lang.ClassCastException: androidx.appcompat.widget.AppCompatImageView cannot be cast to android.widget.TextView - i keep getting the error java.lang.ClassCastException: androidx.appcompat.widget.AppCompatImageView cannot be cast to android.widget.TextView java.lang.ClassCastException:android.widget.TextView无法转换为android.widget.EditText - java.lang.ClassCastException: android.widget.TextView cannot be cast to android.widget.EditText
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM