Android: evita que TalkBack anuncie el título de TextView en voz alta

Estoy desarrollando una aplicación Android accesible donde la gente estaría utilizando los servicios de accesibilidad de Explorar por Toque y TalkBack para usar mi aplicación.

Este es mi código XML de Android:

<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 muestra el título "Nombre" y EditText me permite introducir algunos detalles en el campo de formulario. El problema que tengo es que cuando arrastre mi dedo a través de la pantalla utilizando Explorar por el tacto, TalkBack recoge el título de la TextView y lo anuncia en voz alta como "Nombre". Quiero que el TextView sólo muestre texto y no proporcione ningún comentario audible.

He definido contentDescription a @null como se puede ver en el código anterior, pero TalkBack todavía anuncia "Nombre" cuando mi dedo se encuentra sobre el TextView.

También he intentado definir contentDescription en mi clase Java:

 TextView forename=(TextView)findViewById(R.id.forename); forename.setContentDescription(""); 

Sin embargo, sigo teniendo el mismo problema. ¿Hay alguna otra forma de establecer contentDescription a null / empty y evitar que TalkBack lo anuncie en voz alta?

Código 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; } }); } } 

Yo estaba tratando de hacer lo mismo hoy en día, y fue capaz de establecer un 'empty' contentDescription en un TextView como así (utilizando un espacio en blanco no-quebrando):

 decorativeTextView.setContentDescription("\u00A0"); 

ahora TalkBack no dice nada para ese TextView .

pero estoy de acuerdo con Nick sobre dejar la etiqueta como legible en su caso, porque la pista sólo se lee para EditTexts vacío.

Para una mejor compatibilidad hacia atrás:

 ViewCompat.setImportantForAccessibility( decorativeTextView, ViewCompat.IMPORTANT_FOR_ACCESSIBILITY_NO); 

Desde la API 16, Android presentó lo siguiente:

 android:importantForAccessibility="no" 

o

 setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_NO) 

Lo que permite a los desarrolladores desactivar el talkback todos juntos para determinadas vistas.

http://developer.android.com/reference/android/view/View.html

¿Por qué no desea que el TextView hable "nombre"? Se está utilizando como una etiqueta para el EditText. Una vez que el usuario ha introducido algún texto, la sugerencia "introduzca su nombre de usuario aquí" ya no se hablará – por lo que sé – por lo que TextView le dio al usuario algún contexto para el EditText.

Del mismo modo, el anuncio de "editbox" da al usuario el papel del control EditText. Si bien "campo de formulario" podría ser mejor que no sería el mismo comportamiento que en otras aplicaciones y en el sistema operativo.

Tuve un problema similar. Eventualmente lo resolví usando el método setAccessibilityDelegate y reemplazando View.AccessibilityDelegate's método View.AccessibilityDelegate's performAccessibilityAction .

prueba esto:

 View forename = findViewById(R.id.forename); forename.setAccessibilityDelegate(new AccessibilityDelegate() { public boolean performAccessibilityAction (View host, int action, Bundle args){ return true; } }); 

Tuve el mismo problema, y ​​lo único que funcionó para mí fue android:contentDescription=" " (espacio en blanco).

  • Cómo evitar TalkBack de leer el fragmento despedido
  • ¿Por qué nextFocusDown no funciona con la navegación de TalkBack?
  • Personalizar Android Talkback en diálogo de alerta?
  • Cómo agregar contentDescription a ListPreference?
  • Accesibilidad de Android talkback para decir el título del fragmento
  • Cuando utiliza TalkBack, ¿cuál es la forma preferida de alertar al usuario cuando el contenido de un TextView ha cambiado?
  • Prueba de accesibilidad (talkback) para la aplicación
  • ¿Hay una manera estándar de sugerir que un número debe ser leído un carácter a la vez?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.