uso studio que metodos intdef annotation android lint

metodos - que es android studio



Mensajes de pelusa conflictivos relacionados con el uso de paddingStart (2)

Después de que se lanzó el soporte API 17 / RTL, agregué lo siguiente a mi manifiesto

android:supportsRtl="true"

lo que causó que Lint me diera estas advertencias por derecho legítimo donde quiera que tuviera relleno / Izquierda en mis vistas:

  • Considere agregar android: paddingStart = "8dp" para un mejor soporte de diseños de derecha a izquierda

  • Considere agregar android: paddingEnd = "8dp" para un mejor soporte de diseños de derecha a izquierda

Hice esto siguiendo la guía encontrada en este blogpost android-developers , que implicaba que no necesitábamos crear un nuevo archivo layout-v17, sino que podíamos usar tanto el paddingStart / End como los atributos paddingLeft / Right (el Izquierda / Derecha fueron requeridos para continuar apoyando un minSdk más bajo).

Acabo de hacer la actualización a Android Studio 1.0 de la versión Beta anterior, y estoy notando un nuevo error de pelusa que dice:

  • Acolchado de atributos El inicio al que se hace referencia aquí puede provocar un bloqueo en algunos dispositivos específicos anteriores a API 17 (el mínimo actual es 7)

y la solución sugerida es:

Anular recurso en layout-v17

Lo cual tiene sentido. Sin embargo, después de crear layout-v17 y eliminar el paddingStart / End no utilizado de la carpeta de diseño principal, las advertencias originales de Lint han reaparecido diciendo que debo usar paddingStart / End. Parece que no comprende que he anulado los archivos en layout-v17.

¿Alguien sabe cómo resolver lo que parece ser un mensaje de error / advertencia de Lint en conflicto? Sé que puedo simplemente tools:ignore la advertencia, pero estoy esperando una solución "adecuada".

Editar (19/01/15): Hay un problema de Android que me imagino que condujo al nuevo error de pelusa que se agrega a Android Studio. Esto sugiere que el "bloqueo en algunos dispositivos específicos" se refiere a un puñado de tabletas Samsung en API16 donde paddingStart tiene su propia definición y, como tal, se bloquea cuando intenta analizar "8dp".

Algunas personas en el enlace anterior han sugerido utilizar la carpeta layout-ldrtl para manejar la dirección rtl, en lugar de usar paddingStart y paddingEnd.

También he tenido una sugerencia en otro lugar para anular la Factory2 de LayoutInflator cada vez que encuentre que el usuario tiene una tableta API16, y luego establecer manualmente los atributos de todas sus vistas. Esto sin duda funcionará, pero parece extremadamente "manual".

Lamentablemente, no tengo acceso a uno de estos dispositivos que falla, por lo que no puedo verificar por qué no he encontrado a nadie en línea sugiriendo simplemente poner paddingStart en / layout-v17 / folder, y paddingLeft en / layout /? ¿Las tabletas Samsung API16 de alguna manera continúan cayendo a pesar de que paddingStart solo está presente en layout-v17?


Es solo una sugerencia. Espero que hayas resuelto tu problema por ahora. Si configura su nivel mínimo de SDK por debajo de 4.1, entonces debe mencionar explícitamente el relleno como paddingLeft y paddingStart. Para nivel SDK superior a 4.1, puede usar paddingStart. Estoy adivinando (como nunca antes lo había hecho), mientras configuras tu nivel de SDK a 2.2 o por debajo de 4.1, el nivel de SDK de Android se está volviendo loco.


Tiene razón sobre la causa raíz del problema: Samsung definió un atributo personalizado para el ID reservado para paddingStart o paddingEnd .

La forma en que pasé por alto esto fue para extraer las propiedades de relleno y ponerlas en un estilo. Por lo tanto, en lugar de tener diseños diferentes para SDK <17 y SDK> = 17, tengo diferentes estilos para ellos (con paddingLeft&Right en values y paddingStart&End en values-v17 ).

De esta manera, Lint dejará de quejarse sobre eso.