Как добавить плавучую кнопку действия без AppCompat?

Я ищу новое приложение, используя только API 21.

Чтобы следить за дизайном материалов, я пытаюсь использовать FAB, но я не могу найти достойную информацию о том, как использовать тот, который теперь включен в библиотеку дизайна.

До сих пор я добавил библиотеку файл build.gradle и добавил FAB к моему представлению (код ниже)

<android.support.design.widget.FloatingActionButton android:id="@+id/fab" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="bottom|end" android:src="@android:drawable/ic_menu_add" android:layout_alignParentBottom="true" android:layout_alignParentEnd="true" app:elevation="5dp" app:borderWidth="0dp" app:fabSize="mini"/> 

(Это в RelativeLayout)

Когда я запускаю приложение, я получаю:

Android.view.InflateException: двоичная строка XML-файла # 15: ошибка раздувания класса android.support.design.widget.FloatingActionButton

Я нашел один ответ на SO, в котором говорится, что мне нужно использовать тему AppCompat, но я бы предпочел использовать только материал Material / API21.

Как я могу использовать FAB без AppCompat (библиотеки поддержки)?

FAB встроен в новую библиотеку Design Design, которая будет работать на устройствах уже в API 7. Вам нужно будет включить его в зависимость от использования (и не стесняйтесь это делать).

Если вы хотите избежать использования библиотеки (или любого внешнего кода), вам нужно будет нарисовать FAB самостоятельно (используя Drawable Shape).

Итог, используя библиотеку Design Compat, является предпочтительным методом поддержки FAB, и вы должны использовать его. The Design Compat lib является «чистым / материалом API21».

Существует НЕ реализация FAB для любого другого API, кроме тех, которые находятся в библиотеке поддержки Design. Вы должны включить lib или полностью реализовать код.

Конструктор lib имеет зависимость от AppCompat, поэтому, если вы планируете использовать родную фабрику, вам также потребуется включить зависимость для AppCompat.

Из официального сообщения в блоге : « Обратите внимание, что поскольку библиотека Design зависит от библиотек поддержки поддержки v4 и AppCompat, они будут автоматически включаться при добавлении зависимостей библиотеки дизайна ».

Библиотека Material Design имеет зависимость от AppCompat. Проверьте ответ @Booger. Об этом сообщает официальный блог.

Как использовать FAB.

Добавьте зависимость к вашему build.gradle :

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

Просто добавьте FAB в свой дизайн:

 <android.support.design.widget.FloatingActionButton xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/fab" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="bottom|right" android:src="@drawable/ic_add" android:layout_marginBottom="@dimen/fab_margin_bottom" android:layout_marginRight="@dimen/fab_margin_right" app:elevation="6dp" app:borderWidth="0dp" app:fabSize="normal" /> 

В настоящее время есть некоторые ошибки.

Вы должны определить app:borderWidth="0dp" чтобы отобразить тень с API21 +.

Также вы должны определить разные поля для API 21+ и более старых устройств.

RES / значения / dimens.xml

 <dimen name="fab_margin_right">0dp</dimen> <dimen name="fab_margin_bottom">0dp</dimen> 

RES / значения-V21 / dimens.xml

 <dimen name="fab_margin_right">16dp</dimen> <dimen name="fab_margin_bottom">16dp</dimen> 

FAB использует цвет акцента, и вы можете переопределить атрибут app:backgroundTint .

Наконец, вы можете установить ClickListener с помощью:

 fab = (FloatingActionButton) findViewById(R.id.fab); fab.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //do something } }); 

В GitHub также есть несколько популярных библиотек:

FloatingActionButton, который может развернуть / свернуть как меню, чтобы выявить несколько действий.

Я бы сказал, что, хотя вы намерены сделать свое приложение доступным только для API21, но я призываю вас реализовать приложение с помощью Android Support Library AppCompat-v7 в любом случае. Вы получите много преимуществ.

Во всяком случае, это ваш выбор. Просто мое предложение. Но если вы уверены. Или ознакомьтесь с полным руководством по использованию библиотеки поддержки дизайна Android. http://inthecheesefactory.com/blog/android-design-support-library-codelab/en

Надеюсь, что эта помощь