5

Я ищу, чтобы создать новое приложение, используя только API 21.Как добавить плавучую кнопку действия без AppCompat?

Чтобы отслеживать конструкцию материалов, я пытаюсь использовать 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: Binary XML файл строка # 15: Ошибка класс накачивания android.support.design.widget.FloatingActionButton

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

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

+0

Я думаю, вы действительно пропустили бы много времени и великих API, таких как CoordinatorLayout, Snackbar, NavigationView, TabLayout ... и так далее. Которая в значительной степени является «чистым материалом». Во всяком случае, создание собственного FloatingActionButton на API21 + довольно просто. Вы можете взглянуть на реализацию googles в [android-topeka] (https://github.com/googlesamples/android-topeka/blob/master/app/src/main/java/com/google/samples/apps/topeka /widget/fab/FloatingActionButton.java). –

ответ

6

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

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

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

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

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

От official blog post: «Обратите внимание, что, как библиотека дизайна зависит от поддержки v4 и библиотек поддержки AppCompat, те будут включены автоматически при добавлении зависимости дизайн библиотеки»

+0

Я думаю, что есть некоторые скрещенные провода. Я знаю, что мне нужно использовать библиотеку поддержки дизайна, я не об этом. Я говорю, что мне кажется, что я должен использовать материал V7 AppCompat, чего я не хочу. –

+0

Сложил это в ответ - в нижней строке, есть зависимость от AppCompat, поэтому вы должны использовать его. – Booger

-1

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

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

+1

Я лично не буду использовать стороннюю библиотеку прямо сейчас - и придерживаюсь «родной» реализации, включенной в Design Lib. Важно придерживаться стандартов (и стандартный «Design Lib Implemented» FAB поможет вам ближе всего). Я знаю, что у него может быть не так много функций (включая расширяемость), но по-прежнему считают, что важно разрабатывать и внедрять новые стандарты. – Booger

-1

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

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

Надежда эта помощь

+0

В чем преимущества использования библиотеки v7?Кроме того, кажется, я могу использовать только собственный FAB, используя библиотеку поддержки дизайна, которая использует тему AppCompat:/ –

1

Материал Дизайн библиотека имеет зависимость с 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+ и более старых устройств.

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

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

Рез/значения-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 
    } 
}); 
-1

На самом деле у меня была такая же проблема. Решение было довольно простым: вы должны определить app:rippleColor="@color/colorPrimary" , и вы можете использовать FAB без использования Appcompat Themes and Activities. Конечно, вы должны включить compile 'com.android.support:support-v4:25.3.1' и compile 'com.android.support:design:25.3.1' , но вам НЕ нужно использовать AppCompatActivity и те Темы.

<android.support.design.widget.FloatingActionButton 
    android:id="@+id/action_add_palette" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_gravity="bottom|end" 
    android:layout_margin="16dp" 
    android:src="@android:drawable/ic_input_add" 
    app:rippleColor="@color/colorPrimary" /> 
+0

Это не работает –

Смежные вопросы