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 mediante el uso de 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 setting contentDescription en mi clase de Java:

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

Sin embargo, todavía tengo 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 tal (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 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).

  • Android: establece el enfoque de accesibilidad de TalkBack a una vista específica
  • Personalizar Android Talkback en diálogo de alerta?
  • Android: ¿Cómo forzar Explore-By-Touch / Talkback para repetir la ContentDescription de la vista actual en AccessibilityFocus?
  • Acceso total al tacto a pesar de TalkBack / lector de pantalla
  • Prueba de accesibilidad en dispositivos emulados (Marshmallow)
  • Android - Evitar que TalkBack lea la aplicación Nombre y orientación actual
  • Cómo agregar contentDescription a ListPreference?
  • Accesibilidad de Android talkback para decir el título del fragmento
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.