2017-10-03 1 views
2

Ich möchte „Talkback-“ standart Textview als Taste anounces. Ich habe versucht, auf diese Weise zu verwendenWie ich Zugänglichkeit für classname android.widget.TextView außer Kraft setzen kann

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); 
    } 
} 

und Aktivität:

TextView finishButton= new TextView(this); 
    ViewCompat.setAccessibilityDelegate(finishButton, new AccessibilityDelegateButton(Button.class.getName())); 

, aber es funktioniert nicht ...

Antwort

0

Wie in der

official documentation angegeben

Auf Plattformversionen Vor der API 23 werden Delegiertenmethoden für Ansichten im Paket android.widget. * vor den Hostmethoden aufgerufen. Dies verhindert, dass bestimmte Eigenschaften wie der Klassenname geändert werden.

Ab API 23 werden die Delegate-Methoden nach Hostmethoden aufgerufen, bei denen alle Eigenschaften geändert werden, ohne dass sie von der Hostklasse überschrieben werden.

Und das sollte für AccessibilityDelegateCompat sein nach dem note

Sind Sie auf API < 23 vielleicht? In diesem Fall müssen Sie die Klassennamen View.AccessibilityDelegateCompat

in onInitializeAccessibilityNodeInfo Verfahren einzustellen
Verwandte Themen