dimens.xmlで作成したディメンションに基づいてマージンを設定したい場合は、そのデータバインディングは次のケースで見つけることができます:Androidのデータバインディング - 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" />
それが見つかりましたが、マージンボトムはタイプフロートできません。どうすればこの問題を解決できますか?私は両方の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>
このコードはどこで作成する必要がありますか? marginBottomを指定するすべてのレイアウトは、このメソッドを使用するのか、データバインディングのみかこの特定のレイアウトのみを使用するのでしょうか? –
これは、データバインディングが有効になっているプロジェクトの任意の(パブリック)クラスに追加できます。データにマージされたすべてのマージン属性に使用されます。 –
問題は簡単です。マージンはビューのプロパティではなく、ビューのレイアウトインスタンスです。パッディングのような他のビュープロパティで試したことをやり遂げることはできますが、マージン属性に接頭辞 'layout_'があるのは良い理由があります。 – racs