1. ホーム
  2. android

AppCompat v21を使用して、アンドロイドでフローティングアクションボタン(FAB)を作成する方法は?

2023-07-12 11:33:08

質問内容

Googleカレンダーのようなフローティングアクションボタン(リストビューにアイテムを追加する)を、ロリポップ以前のAndroidバージョン(5.0以前)との互換性を維持しながら作成したいのです。

こんなレイアウトを作りました。

アクティビティmain_activity.xmlです。

<LinearLayout ... >

     <include
         layout="@layout/toolbar"/>

     <RelativeLayout ... >

     <!-- My rest of the layout -->

          <!-- Floating action button -->
          <ImageButton style="@style/AppTheme"
                     android:layout_width="60dp"
                     android:layout_height="60dp"
                     android:text="New Button"
                     android:id="@+id/button"
                     android:src="@drawable/ic_fab"
                     android:background="@drawable/fab"
                     android:layout_alignParentBottom="true"
                     android:layout_alignParentRight="true"
                     android:layout_marginBottom="24dp"
                     android:layout_marginRight="24dp"/>

     </RelativeLayout>

 </LinearLayout>

描画可能なfab.xmlです。

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
       android:shape="oval">
    <solid android:color="#ffa48bc0"/>
</shape>

スタイルstyles.xml

<resources>
    <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
        <item name="colorPrimary">#ff1d79b1</item>
        <item name="colorPrimaryDark">#ff084d95</item>
    </style>
</resources>

結果は似ていますが、マテリアルデザインの特徴である陰影がありません。

カレンダーのフローティングアクションボタンです。

私のアプリのフローティングアクションボタンです。

ボタンに陰影をつけるにはどうしたらよいですか?

私はすでに標高属性を使用していますが、動作しません。

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

独自の FAB を作成したり、サードパーティのライブラリを使用したりする必要はなくなりました。

https://developer.android.com/reference/android/support/design/widget/FloatingActionButton.html

デザインという新しいサポートライブラリをgradleファイルに追加するだけです。

compile 'com.android.support:design:22.2.0'

...そして、あなたはもう大丈夫です。

<android.support.design.widget.FloatingActionButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom"
        android:layout_margin="16dp"
        android:clickable="true"
        android:src="@drawable/ic_happy_image" />