---
# System prepended metadata

title: Propuesta definición y uso de Dimens
tags: [foro]

---

# Propuesta definición y uso de Dimens

###### tags: `foro`

## Dimens

Todas las dimensiones usadas para implementar los diseños de vista deben estar definidas en recursos de tipo `dimen`

### DPs

- Las dimensiones comunes (en **KBP**, módulo `common`; en proyectos **legacy**, region `COMMON`) deberán estar especificadas como se muestra a continuación. Mediante consenso, los equipos deben valorar la inclusión de nuevas dimensiones comunes en el proyecto.
    - Plantilla:
    ```xml
    <dimen name="common__view_name__view_measure">48dp</dimen>
    ```
    - Ejemplo:
    ```xml
    <dimen name="common__btn__height">48dp</dimen>
    ```

- Cada vista de una funcionalidad (en **KBP**, cualquier módulo de `feature`; en proyectos **legacy**, region de la `SCREEN` correspondiente) tendrá especificadas sus propias dimensiones de la siguiente manera:
    - Si es una dimensión común, referenciar a la dimensión del módulo `common`:
    ```xml
    <dimen name="login_fragment__btn__register__height">@dimen/common__btn__height</dimen>
    ```
    
    - Si es una dimensión propia, específicarla en su archivo de dimensiones:
    ```xml
    <dimen name="login_fragment__btn__init__height">64dp</dimen>
    ```
    - Plantilla:
    ```xml
    <dimen name="screen_context__view_type__view_name__view_measure">64dp</dimen>
    ```
    - Ejemplo:
    ```xml
    <dimen name="login_fragment__btn__init__height">64dp</dimen>
    <dimen name="login_fragment__input__user__height">48dp</dimen>
    ```
- Además, si se identifican dimensiones comúnes propias de la funcionalidad (en **KBP**, cualquier módulo de `feature`; en proyectos **legacy**, region de la `FEATURE`), definirlas de la siguiente manera:
    - Plantilla:
    ```xml
    <dimen name="feature_context__view_name__view_measure">64dp</dimen>
    ```
    - Ejemplo:
    ```xml
    <dimen name="login_feature__btn__height">64dp</dimen>
    ```

- Excepcionalmente, las dimensiones en selectores, drawables y similares serán definidos explícitamente salvo haber comprobado in situ el buen funcionamiento de usar referencias.


### SPs

- Para las dimensiones comunes (en **KBP**, módulo `common`) se definen por tipo de texto (deberían estar espeficicadas por equipo **UX/UI** en una Guía de estilo)
- No se permitirán sufijos de tipo `small`, `high`, `big`, `ultimate`, etc. Deberán de ser lo suficientemente descriptivos.
    ```xml
    <!-- Common defined by UX/UI or Google Material Design-->
    <dimen name="common__font__h1">96sp</dimen>
    <dimen name="common__font__h2">60sp</dimen>
    <dimen name="common__font__h3">48sp</dimen>
    <dimen name="common__font__h4">34sp</dimen>
    <dimen name="common__font__h5">24sp</dimen>
    <dimen name="common__font__h6">20sp</dimen>
    <dimen name="common__font__subtitle1">16sp</dimen>
    <dimen name="common__font__subtitle2">14sp</dimen>
    <dimen name="common__font__body1">16sp</dimen>
    <dimen name="common__font__body2">14sp</dimen>
    <dimen name="common__font__button">14sp</dimen>
    <dimen name="common__font__caption">12sp</dimen>
    <dimen name="common__font__overline">10sp</dimen>
        
    <!-- New common defined -->
    <dimen name="common__font__header__suffix_descriptive">40sp</dimen>
    <dimen name="common__font__subtitle__suffix_descriptive">20sp</dimen>
    
    <!-- Opcionalmente comentar ciertas dimensiones de fuentes para casos muy específicos-->
    <dimen name="common__font__header__map_toolbar">36sp</dimen>
    ```

- Cada vista tendrá especificadas sus propias dimensiones de la siguiente manera
    - Si es una dimensión común, referenciar a la dimensión del módulo `common`
    ```xml
    <dimen name="login__label__title">@dimen/common__font__h5</dimen>
    ```
    
    - Si es una dimensión propia, específicarla en su archivo de dimensiones
    ```xml
    <dimen name="login__label__user_input">12sp</dimen>
    ```
    
- Si considera conveniente por parte del equipo, definir dimensiones comunes dentro de una funcionalidad

    - Plantilla:
    ```xml
    <dimen name="feature_context__font__view_name__view_measure">64dp</dimen>
    ```
    - Ejemplo:
    ```xml
    <dimen name="login_feature__font__title">64dp</dimen>
    ```