Código
Escribí un diseño simple que tiene un EditText
pero muestra el siguiente mensaje de advertencia:
“Ninguna vista de etiqueta apunta a este campo de texto”
Mientras buscaba, encontré esto y resolvió ese mensaje de advertencia, pero no obtuve diferencia entre ambos atributos android:id
y android:labelFor
. ¿Alguna aclaración?
Dios mío
androide: identificación
Proporcione un nombre de identificador para esta vista, para luego recuperarlo con
View.findViewById()
oActivity.findViewById()
. Esta debe ser una referencia de recurso; por lo general, configura esto usando la sintaxis @+ para crear nuevos recursos de ID. Por ejemplo: android:id=”@+id/my_id” que le permite recuperar la vista más tarde confindViewById(R.id.my_id)
.Debe ser una referencia a otro recurso, en la forma
"@[+][package:]type:name"
o a un atributo de tema en la forma “?[package:][type:]nombre”.Esto corresponde al id de símbolo de recurso de atributo global.
android:etiquetaPara
int final estático público etiquetaPara
Especifica el ID de una vista para la que esta vista sirve como etiqueta con fines de accesibilidad. Por ejemplo, un TextView antes de EditText en la interfaz de usuario generalmente especifica qué información está contenida en EditText. Por lo tanto, TextView es una etiqueta para EditText.
Debe ser un valor entero, como “100”.
Esto también puede ser una referencia a un recurso (en la forma “@[package:]type:name”) o atributo del tema (en la forma “?[package:][type:]name”) que contiene un valor de este tipo.
Valor constante: 16843718 (0x010103c6)
ACTUALIZAR:
Por ejemplo –
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<LinearLayout android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_width="match_parent">
<TextView android:layout_width="match_parent"
android:layout_height="match_parent"
android:labelFor="@+id/edit_item_name"
android:text="Item Name"/>
<EditText android:id="@+id/edit_item_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Item Name"/>
</LinearLayout>
</LinearLayout>
Referencia: androide: identificación y android:etiquetaPara.
-
en mi caso, está dando una advertencia para EditText Field y cuando actualizo el atributo labelFor en EditText, apareció una advertencia. Aquí actualiza el mismo atributo para TextView … Todavía no tengo claro en qué referencia se debe usar.
– Código
14 de julio de 2014 a las 9:06
-
¿Cuál es la ventaja de establecer labelfor?
– Psíquico
2 de diciembre de 2014 a las 19:04
-
Propósitos de accesibilidad de @Psypher: sin eso, un lector de pantalla tiene problemas para saber cuál es la etiqueta de un campo de entrada, y los invidentes no pueden “ver” la etiqueta que está al lado de un campo.
– Blaisorblade
20/09/2016 a las 18:55
-
Sería bueno explicar la razón de los múltiples
+
s, al leer los documentos, parece que no deberían estar allí. Ver comentarios a continuación: stackoverflow.com/questions/24731137/…– Blaisorblade
20/09/2016 a las 18:56
-
Para aquellos que pueden no tener la reputación de ver las respuestas eliminadas, encontré este elogio de una respuesta eliminada muy útil: si los elementos XML se reordenan, omitir el “+” fallará. (Y a Android Studio le gusta reordenar el orden cuando no importa). Agregarlo varias veces no hace daño, y omitirlo es una fórmula para futuros dolores de cabeza.
– BlueMonkMN
19 de diciembre de 2017 a las 1:03
android:id
define el ID de esta vista.
android:labelFor
hace referencia al ID de otra vista.
android:id
Simplemente el ID de la vista para acceder (mediante programación) a la vista.
android:labelFor
aparece a veces en combinación con la advertencia de pelusa:
Falta la etiqueta de accesibilidad: proporcione una vista con un ‘android:labelFor’ que haga referencia a esta vista o proporcione un ‘android:hint’
Entonces, por ejemplo: Si tienes un EditText
que no se describe a sí mismo, Android se pregunta si podría tener algún título o texto (TextView
) que podría describir para qué se usa EditText. Entonces, haciendo referencia a la identificación del TextView
básicamente le da una idea de qué poner en el EditText
con su texto en el modo de accesibilidad.
Ver:
https://developer.android.com/guide/topics/ui/accessibility/principles#editable
Además de todas las respuestas, si no usa archivos xml para aplicaciones, esta es una breve explicación para qué sirve VIEW ID:
(por cierto, en mi opinión, usar xml apesta: mi único archivo xml es manifiesto: D generado por gradle)
@IdRes: anotación para la identificación del recurso
/** define resource id for view */
@IdRes
int TEXT_VIEW_ID = "111111";
/** create edit tex in code */
EditText myTextView = new EditText(Context);
/** set view id */
myTextView.setID(TEXT_VIEW_ID);
/** set layout params etc then attach or inflate as u wish to view hierarchy */
/** use view id to find view */
EditText etFound = (EditText) View.findViewById(TEXT_VIEW_ID);
PD. La identificación es obligatoria para preservar el estado de la vista de jerarquía cuando se usa Activity.onSaveInstanceState (Bundle), por lo que si crea en el código (VIEW / WIDGET / LAYOUT, etc.) no olvide configurarlo.
benny
android:etiquetaPara
Use este atributo para indicar que una vista debe actuar como una etiqueta de contenido para otra vista.
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/email_subject_label"
android:labelFor="@id/email_subject" />
<EditText
android:id="@+id/email_subject"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
Para más detalles: Accesibilidad de Android: cómo proporcionar etiquetas de contenido
este podría ser útil
– Nir Alfasi
14 de julio de 2014 a las 7:11
Posible duplicado del mensaje de advertencia “Ninguna vista de etiqueta apunta a este campo de texto”
– SÍ
29 de noviembre de 2015 a las 8:24