1. ホーム
  2. android

[解決済み] Android Design Library - フローティングアクションボタンのパディング/マージン問題

2022-10-11 07:52:33

質問

Google Design Library の新しい FloatingActionButton を使用していますが、パディングとマージンに奇妙な問題が発生しています。この画像 (開発者レイアウト オプションをオンにしたもの) は API 22 のものです。

そして、API17から。

これはXMLです。

<android.support.design.widget.FloatingActionButton
        android:id="@+id/fab"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentEnd="true"
        android:layout_gravity="bottom|right"
        android:layout_marginLeft="16dp"
        android:layout_marginRight="20dp"
        android:layout_marginTop="-32dp"
        android:src="@drawable/ic_action_add"
        app:fabSize="normal"
        app:elevation="4dp"
        app:borderWidth="0dp"
        android:layout_below="@+id/header"/>

API 17のFABは、なぜパディングやマージンが大きいのですか?

どのように解決するのですか?

更新(2016年10月)しました。

現在の正しい解答は app:useCompatPadding="true" を入れることです。これにより、異なる API バージョン間でパディングの一貫性を保つことができます。しかし、これでもデフォルトのマージンは少しずれているようなので、それらを調整する必要があるかもしれません。しかし、少なくともAPI固有のスタイルがこれ以上必要ないことは確かです。

前回の回答

API固有のスタイルを使用することで、簡単に実現できます。あなたの通常の values/styles.xml に、このようなものを入れます。

<style name="floating_action_button">
    <item name="android:layout_marginLeft">0dp</item>
    <item name="android:layout_marginTop">0dp</item>
    <item name="android:layout_marginRight">8dp</item>
    <item name="android:layout_marginBottom">0dp</item>
</style>

で、values-v21/styles.xmlの下に、これを使用します。

<style name="floating_action_button">
    <item name="android:layout_margin">16dp</item>
</style>

で、そのスタイルをFloatingActionButtonに適用します。

<android.support.design.widget.FloatingActionButton
...
style="@style/floating_action_button"
...
/>

他の人が指摘したように、API <20 では、ボタンはそれ自身の影をレンダリングし、ビューの全体の論理的な幅に追加しますが、API >=20 では、ビュー幅に貢献しない新しい Elevation パラメータを使用します。