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.
- La vinculación de datos de Android produce "Carpetas de origen generadas en una ubicación incorrecta"
- Android Spinner databind usando la lista de matrices
- Vinculación de Datos de Android Fallback / Valor predeterminado
- Cómo crear vinculación de datos personalizados en android? (Estudio del androide)
- No se puede resolver la clase de enlace de datos de Android
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>
- Formato HTML en la nueva biblioteca de enlace de datos de Android
- Vinculación de datos de Android mediante etiqueta de inclusión
- La vinculación de datos de Android pasa los argumentos al método onClick
- Enlace de datos: enlaza método único de escucha con múltiples métodos
- No puede encontrar el símbolo BR en vinculación de datos de Android
- Android - ¿Cómo enlazar un ListView a una colección de objetos personalizados?
- Enlaces de datos con oyentes personalizados en la vista personalizada
- Banda de datos Android @BindingConversion falla para int a cadena
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.