Ich entwickle eine barrierefreie Android-Anwendung, in der Menschen die Erreichbarkeitsdienste von Explore by Touch und TalkBack nutzen, um meine Anwendung zu benutzen.Android - TalkBack davon abhalten, TextView-Titel laut zu verkünden
Dies ist mein Android XML-Code:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/LinearLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:id="@+id/forename"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="20dip"
android:layout_marginLeft="15dip"
android:textSize="20sp"
android:text="@string/forenameText"
android:contentDescription="@null"/>
<EditText
android:id="@+id/EditTextForename"
android:layout_width="285dp"
android:layout_height="65dp"
android:layout_marginTop="10dip"
android:layout_marginLeft="15dip"
android:hint="@string/forenameHint"
android:inputType="textPersonName"
android:lines="1"
android:singleLine="true"
android:textSize="20sp" >
</EditText>
</LinearLayout>
strings.xml
<string name="forenameText">Forename</string>
<string name="forenameHint">Enter your forename here</string>
Textview zeigt den Titel "Vorname" und EditText erlaubt mir einige Details in das Formularfeld eingeben. Das Problem, das ich habe, ist, dass TalkBack, wenn ich meinen Finger über den Bildschirm ziehe, indem ich durch Tippen durch Erforschen nach Berührung suche, den Titel des TextView annimmt und es laut als "Vorname" anmeldet. Ich möchte, dass TextView nur Text anzeigt und keine akustische Rückmeldung liefert.
Ich habe contentDescription auf @null gesetzt, wie Sie aus dem Code oben sehen können, aber TalkBack meldet immer noch "Vorname", wenn mein Finger über die TextView befindet.
ich auch in meiner content Java-Klasse Einstellung versucht:
TextView forename=(TextView)findViewById(R.id.forename);
forename.setContentDescription("");
Allerdings habe ich immer noch das gleiche Problem. Gibt es eine andere Möglichkeit, contentDescription auf null/leer zu setzen und zu verhindern, dass TalkBack es laut ankündigt?
Java-Code:
public class MainActivity extends Activity{
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
View forename = findViewById(R.id.forename);
forename.setAccessibilityDelegate(new AccessibilityDelegate() {
public boolean performAccessibilityAction (View host, int action, Bundle args){
return true;
}
});
}
}
Dies behebt das Problem. Vielen Dank für deine Hilfe! Bitte sehen Sie meinen Kommentar unter dem Beitrag von Nick. Ich habe ein anderes Problem, das ich jetzt zu lösen versuche. – Alex
re. Dieses neue Problem in Ihrem Kommentar: Ich bekomme dieses Verhalten nicht mit Ihrem ursprünglich geposteten Layout, mit einigen doppelten TextView-EditText-Paaren zum Testen. Siehst du das Eingabefeld für die Barrierefreiheit um ein einzelnes Textfeld herum, das du berührst, wenn dies geschieht? Ich habe festgestellt, dass, wenn der Container (z. B. LinearLayout) stattdessen accessibilityfocus erhält (die yellowbox), die schreibgeschützten Kinder alle gelesen werden und nicht als einzeln "touchable" behandelt werden - also könnten Sie meinen, Sie hätten das TextField berührt , aber das Ereignis (und der Fokus) ging tatsächlich durch zum Elternteil ... – salfon
Meine "Antwort" erwähnt API spezifische Updates, diese Lösung funktioniert auch für ältere Versionen von Android! Vielen Dank! – Matt