2012-08-28 14 views
14

Dado que pocas veces el cuadro de autocompletar de Eclipse propone Android: paddingStart android: paddingStop cuando estoy escribiendo archivos de diseño xml.¿Qué son paddingStart y paddingEnd?

Realmente no entiendo lo que se supone que deben hacer esos atributos.

La documentación Eclipse/javadoc no es realmente útil: Sets the padding, in pixels, of the start edge; see padding. y la documentación en línea no hace ninguna referencia a esos atributos: http://developer.android.com/reference/android/view/View.html

¿Me podría explicar?

Respuesta

27

Después de leer el código fuente de Android (View.java) parece que paddingStart y paddingEnd son útiles para cuidar la dirección de la letra (de izquierda a derecha o de derecha a izquierda) definida por el usuario.

Por lo tanto, paddingStart se interpreta como paddinfLeft en idiomas LTR y relleno. Derecho en lenguajes RTL.

El código fuente de View.java (android-4.0.1):

switch (getResolvedLayoutDirection()) { 
     case LAYOUT_DIRECTION_RTL: 
      // Start user padding override Right user padding. Otherwise, if Right user 
      // padding is not defined, use the default Right padding. If Right user padding 
      // is defined, just use it. 
      if (mUserPaddingStart >= 0) { 
       mUserPaddingRight = mUserPaddingStart; 
      } else if (mUserPaddingRight < 0) { 
       mUserPaddingRight = mPaddingRight; 
      } 
      if (mUserPaddingEnd >= 0) { 
       mUserPaddingLeft = mUserPaddingEnd; 
      } else if (mUserPaddingLeft < 0) { 
       mUserPaddingLeft = mPaddingLeft; 
      } 
      break; 
     case LAYOUT_DIRECTION_LTR: 
     default: 
      // Start user padding override Left user padding. Otherwise, if Left user 
      // padding is not defined, use the default left padding. If Left user padding 
      // is defined, just use it. 
      if (mUserPaddingStart >= 0) { 
       mUserPaddingLeft = mUserPaddingStart; 
      } else if (mUserPaddingLeft < 0) { 
       mUserPaddingLeft = mPaddingLeft; 
      } 
      if (mUserPaddingEnd >= 0) { 
       mUserPaddingRight = mUserPaddingEnd; 
      } else if (mUserPaddingRight < 0) { 
       mUserPaddingRight = mPaddingRight; 
      } 
    } 
+3

También tenga en cuenta que no parecen ser públicos. Al menos Eclipse no los compilará para mí. – Timmmm

+1

@Timmmm tiene que tener el objetivo establecido en api 17+ para que compile. – schwiz

+1

@schwiz api 17 no estaba disponible en este momento. Pero ahora, puede establecer el nivel de api en 17 para usar esos campos. – Mathieu

0

Cuando se trabaja con y leyendo esto me doy cuenta de que es paddingStart y paddingEND y no paddingSTOP (aunque existe este elemento).

Cuestiones relacionadas