Android databinding – Cómo obtener dimensiones desde dimens.xml
Quiero establecer márgenes basados en las dimensiones que he creado en dimens.xml Las dimensiones que se trabaja bien, su vinculación de datos sólo se puede encontrar en el caso a continuación:
<TextView android:id="@+id/title_main" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_below="@+id/disableButton" ************* android:layout_marginBottom="@{@bool/showAds ? @dimen/frontpage_margin_ads: @dimen/frontpage_margin_noads}" ************* android:gravity="center_horizontal" android:text="@string/app_name" android:textColor="@android:color/holo_orange_dark" android:contentDescription="@string/app_name" android:textSize="64sp" android:textStyle="bold" />
Lo encontró, pero dice que marginbottom no puede tomar tipo float. ¿Cómo puedo arreglar esto? Traté de lanzar ambas dimensiones a int pero luego se queja de que no se puede lanzar a int.
- Android - ¿Cómo enlazar un ListView a una colección de objetos personalizados?
- Spinner enlace de datos de 2 vías
- Android Databinding: el paquete no existe
- DataBinding en android
- Posible motivo de "Error: no se pueden generar carpetas de vista java.lang.NullPointerException"
Mi archivo xml de dimensiones tiene este aspecto:
<resources> <!-- Default screen margins, per the Android Design guidelines. --> <dimen name="activity_horizontal_margin">16dp</dimen> <dimen name="activity_vertical_margin">16dp</dimen> <dimen name="bigText">44sp</dimen> <dimen name="littleText">44sp</dimen> <dimen name="mediumText">40sp</dimen> <dimen name="smallText">24sp</dimen> <dimen name="fab_margin">16dp</dimen> <dimen name="frontpage_margin_noads">0dp</dimen> <dimen name="frontpage_margin_ads">13dp</dimen> </resources>
- Android dataBinding - cómo utilizar el recurso bool para activar la visibilidad del diseño
- Enlace de datos de Android: 'No se encontró identificador de recurso para el atributo'
- No se puede resolver la clase de enlace de datos de Android
- Edittext cursor restablecer a la izquierda después de la actualización de datos de datos de Android
- La vinculación de datos de Android pasa los argumentos al método onClick
- Error de DataBinding de Android. No se pudo encontrar el complemento
- Android: ¿Variable vinculante y pasando para incluir trabajo de diseño de etiquetas?
- Enlaces de datos con oyentes personalizados en la vista personalizada
El problema aquí no es con dimensiones, sino con android:layout_marginBottom
. No hay soporte incorporado para los atributos de LayoutParams
. Esto se hizo para quitar el "arma de pie" que muchos podrían utilizar para vincular variables a LayoutParams
y tal vez tratar de utilizar la vinculación de datos para animar sus posiciones de esta manera.
La encuadernación de datos es perfecta para ser usada en su ejemplo y usted puede agregar fácilmente la suya propia. Sería algo así.
@BindingAdapter("android:layout_marginBottom") public static void setBottomMargin(View view, float bottomMargin) { MarginLayoutParams layoutParams = (MarginLayoutParams) view.getLayoutParams(); layoutParams.setMargins(layoutParams.leftMargin, layoutParams.topMargin, layoutParams.rightMargin, Math.round(bottomMargin)); view.setLayoutParams(layoutParams); }
Usted, por supuesto, también agregará a la izquierda, superior, derecha, inicio y final BindingAdapters
también.