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:
- Android: evita que TalkBack anuncie el título de TextView en voz alta
- Android Talkback no lee caracteres utf-8 en la vista Web usando html
- Android: ¿Cómo forzar Explore-By-Touch / Talkback para repetir la ContentDescription de la vista actual en AccessibilityFocus?
- Android - Evitar que TalkBack lea la aplicación Nombre y orientación actual
- Cómo cambiar Android Talkback en caso de nombre de la aplicación
<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; } }); } }
- Acceso total al tacto a pesar de TalkBack / lector de pantalla
- Función de conversación de RecyclerView no bien
- ¿Cómo puedo modificar la sugerencia de uso de TalkBack para una vista que se puede hacer clic en Android?
- Android: establece el enfoque de accesibilidad de TalkBack a una vista específica
- Prueba de accesibilidad en dispositivos emulados (Marshmallow)
- Accesibilidad de Android: ¿Cómo cambio el texto leído en voz alta para una Vista de Edición de Texto
- Configuración de la descripción del contenido del menú de opciones android Talkback
- Cómo agregar contenidoDescrito a InfoWindow o marcador en Android GoogleMaps V2 para TalkBack
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).
- Detectar mediante programación, si el bloqueo del sistema puede desactivarse o no en Android?
- Android: Error de tiempo de ejecución: hilo que sale con la excepción no captada (group = 0x4198ccf8)