Android - prévenir TalkBack d'annoncer TextView titre à haute voix
Je suis en train d'élaborer un accessibles de l'application android, où les gens seraient à l'aide d'Explorer par le Toucher et le TalkBack, l'accessibilité des services à utiliser mon application.
C'est mon Android code XML:
<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 affiche le titre de "Prénom" et EditText me permet d'entrer dans quelques détails dans le champ de formulaire. Le problème que j'ai c'est que quand je
faites glisser mon doigt sur l'écran à l'aide d'Explorer par le Toucher, le TalkBack, reprend le titre de la TextView et annonce à haute voix que "Prénom". Je veux le TextView pour afficher uniquement le texte et de ne pas fournir un signal audible.
J'ai mis contentDescription à @null comme vous pouvez le voir dans le code ci-dessus, mais TalkBack annonce encore "Prénom" quand mon doigt est situé sur la
TextView.
J'ai également essayé le réglage contentDescription dans ma classe Java:
TextView forename=(TextView)findViewById(R.id.forename);
forename.setContentDescription("");
Cependant, je reçois toujours le même problème. Est-il un autre moyen de définir contentDescription null/vides et empêcher TalkBack de l'annonçant à haute voix?
De code Java:
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;
}
});
}
}
OriginalL'auteur Alex | 2013-03-30
Vous devez vous connecter pour publier un commentaire.
J'ai essayé de faire la même chose aujourd'hui, et a été en mesure de définir une
'empty'
contentDescription sur unTextView
comme (à l'aide d'une non-rupture des espaces):maintenant
TalkBack
de ne pas dire n'importe quoi pour queTextView
.mais je suis d'accord avec Nick à propos de quitter le label lisible dans votre cas, parce que l'indice est en lecture uniquement pour vide
EditTexts
.re. cette nouvelle question dans votre commentaire: je n'ai pas ce comportement avec votre posté mise en page, avec quelques doublons TextView-EditText paires de test. voyez-vous l'accessibilité de la zone de mise au point autour d'une personne, TextField vous touchez lorsque cela se produit? J'ai trouvé que si le conteneur (par exemple LinearLayout) obtient accessibilityfocus (le yellowbox), la lecture, seuls les enfants seraient tous lire, et ne sont pas considérés comme individuellement 'palpable' - ainsi, vous pensez que vous avez touché le TextField, mais l'événement (et focus) a bel et bien connu pour être un parent...
Ma "réponse", mentionne API mises à jour spécifiques, cette solution fonctionne pour les anciennes versions d'Android! Merci!
Intéressantes réponse ! 🙂
Cette technique est particulièrement utile dans le
RecyclerView
: j'ai appliqué cela à laviewHolder.itemView
. Attention, la vue doit être focusable.OriginalL'auteur salfon
Pour une meilleure compatibilité ascendante:
OriginalL'auteur bonstio
Depuis API 16, Android introduit la suivante:
ou
Qui permet aux développeurs de désactiver talkback tous ensemble pour certaines vues.
http://developer.android.com/reference/android/view/View.html
OriginalL'auteur Matt
Pourquoi ne voulez-vous pas le TextView parler "prénom"? Il est utilisé comme une étiquette pour l'EditText. Une fois que l'utilisateur a entré du texte le soupçon "entrez votre prénom ici" ne serait plus parlée - autant que je sache - le TextView d'attribuer à l'utilisateur un contexte pour le EditText.
De même l'annonce de la "zone de texte" donne à l'utilisateur le rôle de l'EditText de contrôle. Tandis que le "champ de formulaire" peut-être mieux qu'il ne serait pas le même comportement que dans d'autres applications, et dans les OS.
Qu'entendez-vous par "point à la TextView"?
désolé je voulais dire quand je fais glisser mon doigt à l'échelle d'un TextView sur l'écran, toutes les TextViews sont annoncés à haute voix une par une par le lecteur d'écran.
Êtes-vous texte recueilli dans une liste ou un autre récipient où le conteneur a la importantForAccessibility propriété spécifiquement réglé sur "oui"?
OriginalL'auteur Nick Williamson
J'ai eu un problème similaire. J'ai finalement résolu à l'aide de la
setAccessibilityDelegate
méthode et dominanteView.AccessibilityDelegate's
performAccessibilityAction
méthode.essayez ceci:
J'ai également une autre question concernant mon EditText champ de formulaire. J'ai un "indicateur" de l'attribut, il y qui lit une chaîne de caractères appelée "forenameHint". Cette chaîne contient le texte suivant: "Entrez votre prénom ici". Lorsque j'utilise Explorer par le Toucher et faire glisser mon doigt sur le champ de formulaire, le TalkBack annonce "zone de texte Entrez votre prénom ici". Est-il un moyen de l'empêcher d'annoncer "zone de texte" avant chaque chaîne de caractères dans l'indication de l'attribut? Ou peut-être le changer pour quelque chose de plus convivial comme "champ de Formulaire: Entrez votre prénom ici"? Merci d'avance
OriginalL'auteur mmaloon
J'ai eu le même problème, et la seule chose qui a fonctionné pour moi a été
android:contentDescription=" "
(espace blanc).OriginalL'auteur