Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Obtener android: atributo de relleno mediante programación

Desde una vista, ¿cómo puedo obtener el valor del atributo android: padding mediante programación? Actualmente estoy usando:

private static final String ANDROID_NAMESPACE = "http://schemas.android.com/apk/res/android"; private static final String ATTRIBUTE_PADDING = "padding"; public ActivityWrapperView(Context context, AttributeSet attrs) { super(context, attrs); int padding = attrs.getAttributeIntValue(ANDROID_NAMESPACE, ATTRIBUTE_PADDING, -1); } 

Esto devuelve -1, también he intentado usar "android: padding" como el nombre del atributo pero -1 todavía se devuelve.

  • Añada marca (✔) a string.xml
  • ¿Cuáles son los tipos de intenciones posibles para el tipo de intención.setType?
  • Botones personalizados en Android: ¿Cómo obtener borde / borde / marco cuando leo el fondo de xml?
  • Imágenes extraíbles de Android de la URL
  • El receptor de difusión de Android no funciona
  • Cómo "esperar" un hilo en Android
  • EDIT: Mi requisito: Cuando un android: valor de relleno se especifica en el XML de diseño, la vista utilizará este relleno. Si no se especifica un relleno, se utilizará un relleno predeterminado

  • ¿Qué configuración de ProGuard necesito para Firebase en Android?
  • Permisos de solo prueba de Android con gradle
  • ¿Cómo leer el buffer de marco actual en android?
  • ¿Cuál es el propósito de las categorías de intención?
  • Diseño relativo alignParentLeft vs alignParentStart
  • Android: ¿Animación de Scroller?
  • 3 Solutions collect form web for “Obtener android: atributo de relleno mediante programación”

    La forma más fácil era usar android.R.styleable, si hubiera estado disponible. De la misma manera que utiliza para obtener atributos personalizados. R.styleable es una clase que contiene un array int de valores de atributos. Por lo tanto, necesita crear su propia matriz int, que contiene valores int de atributos que necesita.

     public ActivityWrapperView(Context context, AttributeSet attrs) { super(context, attrs); //check attributes you need, for example all paddings int [] attributes = new int [] {android.R.attr.paddingLeft, android.R.attr.paddingTop, android.R.attr.paddingBottom, android.R.attr.paddingRight} //then obtain typed array TypedArray arr = context.obtainStyledAttributes(attrs, attributes); //and get values you need by indexes from your array attributes defined above int leftPadding = arr.getDimensionPixelOffset(0, -1); int topPadding = arr.getDimensionPixelOffset(1, -1); //You can check if attribute exists (in this examle checking paddingRight) int paddingRight = arr.hasValue(3) ? arr.getDimensionPixelOffset(3, -1) : myDefaultPaddingRight; } 

    Sólo puede agregar el android:padding a los atributos de su vista personalizada.

     <declare-styleable name="ActivityWrapperView"> ... <attr name="android:padding" /> ... </declare-styleable> 

    Y luego, puede acceder al atributo igual que sus otros atributos:

     TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.ActivityWrapperView); float padding = a.getDimension(R.styleable.ActivityWrapperView_android_padding, 0); ... boolean hasPadding = a.hasValue(R.styleable.ActivityWrapperView_android_padding); 

    Usted debe ver las getPadding____() .

    Tamaño, relleno y márgenes

    Para medir sus dimensiones, una vista tiene en cuenta su relleno. El relleno se expresa en píxeles para las partes izquierda, superior, derecha e inferior de la vista. El relleno se puede utilizar para compensar el contenido de la vista por una cantidad específica de píxeles. Por ejemplo, un relleno izquierdo de 2 empujará el contenido de la vista en 2 píxeles a la derecha del borde izquierdo. El relleno se puede establecer mediante el método setPadding (int, int, int, int) o setPaddingRelative (int, int, int, int) y consultado llamando a getPaddingLeft (), getPaddingTop (), getPaddingRight (), getPaddingBottom (), getPaddingStart ), GetPaddingEnd ().

    Aunque una vista puede definir un relleno, no proporciona ningún soporte para los márgenes. Sin embargo, los grupos de visualización proporcionan este tipo de apoyo. Consulte ViewGroup y ViewGroup.MarginLayoutParams para obtener más información.

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.