Ich versuche, TalkBack zu bekommen, um zu sagen, was in dem Text ist, der in der host
Ansicht ist, zusammen mit "ist cool" danach.Wie extrahiert man den Text aus Sichten in AccessibilityNodeInfo von AccessibilityDelegate?
Dazu setze ich einen Erreichbarkeitsdelegaten auf ein lineares Layout, aber die text- und contentDescription -Eigenschaften des info
-Parameters sind immer null. d.h. info.getText()
und info.getContentDescription()
geben immer null zurück. Ich kann nicht scheinen, den Text von den geschachtelten TextViews zu extrahieren.
Der Parameter host
ist also ein lineares Layout, das ein anderes verschachteltes lineares Layout enthält. Dieses verschachtelte lineare Layout enthält wiederum verschachtelte Layouts und Textansichten als untergeordnete Elemente. (I API bin Targeting 21+)
linearLayout.setAccessibilityDelegate(new View.AccessibilityDelegate()
{
@Override
public void onInitializeAccessibilityNodeInfo(View host, AccessibilityNodeInfo info)
{
super.onInitializeAccessibilityNodeInfo(host, info);
String newWordsToSay = info.getText() + " is cool"
//info.getText() CRASHES due to null pointer exception
info.setContentDescription(info.setText(newWordsToSay));
}
});
EDIT: Auf den host
param Überprüfung, alle erwarteten verschachtelten Textviews sind, mit ihren jeweiligen Textfelder. Das Problem ist, ich kann den Text nicht von ihnen extrahieren.
Jede Hilfe wäre willkommen.
Wenn Sie eine Inhaltsbeschreibung für eine ViewGroup festlegen, wird TalkBack daran gehindert, Text von den untergeordneten Elementen zu aggregieren. Sie müssten den untergeordneten Text manuell aggregieren und diesen zum Auffüllen Ihrer Inhaltsbeschreibung verwenden. Oder Sie könnten eine 0px TextView als untergeordnetes Objekt hinzufügen und diesem den Text zuweisen, der angehängt werden soll. Keines dieser Verfahren ist sehr zuverlässig, da die Barrierefreiheits-APIs nicht darauf ausgelegt sind. – alanv