Intereting Posts
«ОШИБКА: невозможно восстановить ключ» при экспорте подписанного приложения Android с существующим хранилищем ключей Android маршрутизирует маршрут по карте с двумя POI-s Как реализовать сложные запросы с помощью Content Provider? Android: Нет активности для обработки Intent error? Как это разрешится Как часто обновляется статистика приложений Market? Пробелы, не работающие при использовании API автозаполнения Google Адресов Android. Можно ли добавить ссылку на ссылку в строковый ресурс? PopupWindow z ordering Проблема с утечкой базы данных Content Content Provider Android 5.0: изменение настроек Обзор экрана Название задачи Цвет фона Отправка данных POST на Android Возможно ли установить Eclipse IDE в Galaxy Tab? Каково максимальное количество символов, которое может отображаться в уведомлении Android и iOS? Не удалось войти в систему. Проверьте подключение к сети и повторите попытку. AudioRecord записывает прерывистый звук в Android L Developer Preview

Android databinding – Как получить размеры из dimens.xml

Я хочу установить поля на основе размеров, которые я создал в dimens.xml. Размеры, которые он сам прекрасно работает, его просто привязка данных не может найти его в следующем примере:

<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" /> 

Он нашел это, но он говорит, что marginbottom не может принимать тип float. Как я могу это исправить? Я попробовал кастинг как dimens, так и int, но потом он жалуется, что его нельзя отличить от int.

Мой размер xml-файла выглядит так:

  <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> 

Solutions Collecting From Web of "Android databinding – Как получить размеры из dimens.xml"

Проблема здесь не в размерах, а в android:layout_marginBottom . Для любых атрибутов LayoutParams нет встроенной поддержки. Это было сделано для удаления «ногой», который многие могли бы использовать для привязки переменных к LayoutParams и, возможно, попытаться использовать привязку данных для анимирования своих позиций таким образом.

Связывание данных идеально подходит для использования в вашем примере, и вы можете легко добавить свои собственные. Это было бы так.

 @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); } 

Вы, конечно, также добавили бы левый, верхний, правый, начальный и конечный BindingAdapters .