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:
- Función de conversación de RecyclerView no bien
- Configuración de la descripción del contenido del menú de opciones android Talkback
- Accesibilidad de Android: ¿Cómo cambio el texto leído en voz alta para una Vista de Edición de Texto
- Cuando utiliza TalkBack, ¿cuál es la forma preferida de alertar al usuario cuando el contenido de un TextView ha cambiado?
- ¿Hay una manera estándar de sugerir que un número debe ser leído un carácter a la vez?
<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; } }); } }
- Android: evita que TalkBack anuncie el título de TextView en voz alta
- ¿Por qué nextFocusDown no funciona con la navegación de TalkBack?
- Prueba de accesibilidad (talkback) para la aplicación
- Cómo cambiar Android Talkback en caso de nombre de la aplicación
- Cómo evitar TalkBack de leer el fragmento despedido
- ¿Cómo puedo modificar la sugerencia de uso de TalkBack para una vista que se puede hacer clic en Android?
- Android Talkback no lee caracteres utf-8 en la vista Web usando html
- 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 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).
- ¿Cómo puedo convertir una parte del archivo de código fuente de Java a Kotlin?
- Cómo abrir el teclado Android "123"