2017-10-03 1 views
2

Je veux "talkback" anounces standart TextView comme bouton. j'ai essayé d'utiliser cette façonComment je peux remplacer Accessibility className pour android.widget.TextView

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

et activité:

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

mais il ne fonctionne pas ...

Répondre

0

Comme indiqué dans le official documentation

Sur les versions de la plate-forme avant l'API 23, les méthodes de délégation sur les vues du package android.widget. * sont appelées avant les méthodes hôtes. Cela empêche certaines propriétés telles que le nom de classe d'être modifié

A partir de l'API 23, les méthodes déléguées sont appelées après les méthodes hôte, toutes les propriétés devant être modifiées sans être écrasées par la classe hôte.

Et cela devrait être la même pour AccessibilityDelegateCompat selon la note

Êtes-vous sur l'API < 23 peut-être? Dans ce cas, vous devez définir le nom de la classe en onInitializeAccessibilityNodeInfo méthode de View.AccessibilityDelegateCompat