Как я могу добавить новую плавающую кнопку действия между двумя виджетами / макетами

Думаю, вы видели новые рекомендации по дизайну Android с новой «плавающей кнопкой действия», также известной как «FAB».

Например, эта розовая кнопка:

введите описание изображения здесь

Мой вопрос звучит глупо, и я уже много чего перепробовал, но как лучше всего разместить эту кнопку на пересечении двух макетов?

В приведенном выше примере эта кнопка идеально расположена между тем, что мы можем представить как ImageView и relativeLayout.

Я уже испробовал множество настроек, но убежден, что есть правильный способ сделать это.


person Waza_Be    schedule 27.06.2014    source источник
comment
Вы можете разместить макеты внутри макета и разместить кнопку на этом макете.   -  person Chrome Penguin Studios    schedule 03.08.2014
comment
Думаю, эта библиотека может очень помочь: github.com/ksoichiro/Android-ObservableScrollView   -  person android developer    schedule 28.11.2014
comment
Как это скрыть при прокрутке? Я столкнулся с проблемой, когда, если я прокручиваю страницу, fab остается наверху и не скрывается! Пожалуйста помоги   -  person Anish Kumar    schedule 19.04.2017


Ответы (10)


Лучшая практика:

  • Добавить compile 'com.android.support:design:25.0.1' в файл Gradle
  • Используйте CoordinatorLayout в качестве корневого представления.
  • Добавьте layout_anchor в FAB и установите его на вид сверху
  • Добавьте layout_anchorGravity в FAB и установите для него: bottom|right|end

введите описание изображения здесь

<android.support.design.widget.CoordinatorLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">

        <LinearLayout
            android:id="@+id/viewA"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="0.6"
            android:background="@android:color/holo_purple"
            android:orientation="horizontal"/>

        <LinearLayout
            android:id="@+id/viewB"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="0.4"
            android:background="@android:color/holo_orange_light"
            android:orientation="horizontal"/>

    </LinearLayout>

    <android.support.design.widget.FloatingActionButton
        android:id="@+id/fab"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="16dp"
        android:clickable="true"
        android:src="@drawable/ic_done"
        app:layout_anchor="@id/viewA"
        app:layout_anchorGravity="bottom|right|end"/>

</android.support.design.widget.CoordinatorLayout>
person David    schedule 22.06.2015
comment
ошибка при запуске этого кода: java.lang.RuntimeException: Unable to start activity ComponentInfo{snackbar.k8.com.snackbar/snackbar.k8.com.snackbar.FloatActionButton}: android.view.InflateException: Binary XML file line #1: Error inflating class android.support.design.widget.CoordinatorLayout - person Mansukh Ahir; 07.07.2015
comment
@acrespo Я считаю, что нужно цитировать, почему это лучшая практика. Что делает эту реализацию лучше, чем та, которая упоминается в ответе Хью Джеффнера? - person goncalotomas; 12.08.2015
comment
@Aprendiz Мне тоже нужна цитата, но я понимаю, почему это лучший ответ, чем у Хью Джеффнера. Я считаю это проще, гибче, менее хакерским. Вы не можете жестко кодировать значения layout_height или margin, которые могут меняться во времени или определяться динамически. Ответ Хью может сработать в некоторых простых случаях и, возможно, может быть обходным путем для некоторых сторонних библиотек, которые не полностью поддерживают функции CoordinatorLayout, layout_anchor и layout_anchorGravity, например, тот, который он использует, futuresimples. - person acrespo; 13.08.2015
comment
Кстати, futuresimples - УДИВИТЕЛЬНАЯ библиотека, и если кому-то интересно, есть ли вилка, сочетающая этот CoordinatorLayout подход с этой библиотекой, посмотрите. А еще есть форк для старых версий. - person acrespo; 13.08.2015
comment
Искал именно ЭТО. +1 для простоты. - person Emiliano De Santis; 16.11.2015
comment
Почему всего этого нет в документации Android? - person Mostafa; 29.12.2015
comment
что такое drawable / ic_done? Он не подбирается автоматически. - person Stealth Rabbi; 06.03.2016
comment
@StealthRabbi, вы можете заменить его на любой другой значок, который хотите - person David; 06.03.2016
comment
Да, я знаю. Меня больше беспокоило то, что об этом не было упомянуто в посте. - person Stealth Rabbi; 06.03.2016
comment
Это работает, но макет Cordinator смещает мой ViewA над appBar. Какие-либо предложения ? - person AndroidGuy; 08.07.2016
comment
Избегайте использования android: layout_margin, на устройствах pre lollipop требуется дополнительное место, следует использовать app: useCompatPadding = true :) - person Jonatan; 18.08.2016
comment
что, если это вкладка? Два макета определены внутри фрагмента, но этот FAB должен быть определен в действии. Итак, как я могу этого добиться? - person He Yifei 何一非; 19.08.2016
comment
использование app: layout_anchor вызывает у меня проблему с рендерингом (параметры макета linearlayout не могут быть переданы в координаторlayout. :( - person DAVIDBALAS1; 23.08.2016
comment
Параметры макета @ DAVIDBALAS1 linearlayout не могут быть преобразованы в координатор. Ошибка макета была исправлена ​​в com.android.support:design:24.2.1, измените ее в файле build.gradle - person kashlo; 29.09.2016
comment
Как это скрыть при прокрутке? Я столкнулся с проблемой, когда, если я прокручиваю страницу, fab остается наверху и не скрывается! Пожалуйста помоги - person Anish Kumar; 19.04.2017
comment
Если вы используете библиотеки androidx вместо: android.support.design.widget.FloatingActionButton, используйте: com.google.android.material.floatingactionbutton.FloatingActionButton. - person Gad Wissberg; 16.03.2020

Кажется, что самый чистый способ в этом примере - это:

  • Используйте RelativeLayout
  • Расположите 2 смежных вида один под другим
  • Выровняйте FAB по родительскому правому / концу и добавьте правое / крайнее поле
  • Выровняйте FAB по нижнему краю области заголовка и добавьте отрицательное поле, вдвое меньше размера FAB, включая тень.

Пример, адаптированный из реализации Shamanland, используйте любой FAB, какой пожелаете. Предположим, что FAB имеет высоту 64dp, включая тень:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <View
        android:id="@+id/header"
        android:layout_width="match_parent"
        android:layout_height="120dp"
    />

    <View
        android:id="@+id/body"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_below="@id/header"
    />

    <fully.qualified.name.FloatingActionButton
        android:id="@+id/fab"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_alignBottom="@id/header"
        android:layout_marginBottom="-32dp"
        android:layout_marginRight="20dp"
    />

</RelativeLayout>

Пример макета FAB

person Hugh Jeffner    schedule 20.11.2014
comment
Этот макет помог мне! Я использую FAB от futuresimple - его довольно просто добавить и использовать, Наслаждайтесь! - person Roman; 12.01.2015
comment
Как вы сказали, разместите 2 смежных представления одно под другим - ›это была проблема, которую я получил, я просто упустил из виду, что мой макет контейнера был испорчен из-за несоответствия скобок: D Спасибо: P - person Martin Pfeffer; 02.03.2015
comment
Это не лучшее решение. Отрицательное поле, кажется, устраняет нижнюю половину цели касания кнопки. Не регистрируются клики, если нажимаю нижнюю половину фаба. - person Doronz; 16.04.2015
comment
@Doronz Хм, похоже, у меня нет этой проблемы. Ваши просмотры в правильном порядке, т.е. FAB - это верхний слой? - person Hugh Jeffner; 16.04.2015
comment
Это один из лучших ответов, которые я видел на SO. Удалите маркеры с помощью кода. Просто и мило. +1 от меня. - person Subby; 15.05.2015
comment
android: layout_marginBottom = -32dp жестко запрограммированное значение с кнопкой wrap_content - плохое решение - person Lester; 28.05.2015
comment
@Lester Хороший замечание, я сделал предположение, что FAB имеет высоту 64dp, поэтому вы можете использовать это для layout_height. В качестве альтернативы, если у вас разные размеры FAB в зависимости от экрана, вы можете использовать ресурс, но я хотел, чтобы пример был простым. - person Hugh Jeffner; 01.06.2015
comment
Это полное имя представления FAB, которое вы выбрали для использования. Их много, и любой из них можно использовать таким образом. - person Hugh Jeffner; 15.06.2015
comment
Это просто общий вид, чтобы показать концепцию, проверьте изображение, которое я добавил в ответ. - person Hugh Jeffner; 16.06.2015
comment
android: layout_marginBottom = -32dp ‹- значение 32dp равно FAB height / 2. Это доза, как HTML + CSS Вертикальное выравнивание по центру в одну сторону. Хороший трюк. - person 최봉재; 08.03.2017
comment
Как это скрыть при прокрутке? Я столкнулся с проблемой, когда, если я прокручиваю страницу, fab остается наверху и не скрывается! Пожалуйста помоги - person Anish Kumar; 19.04.2017
comment
Разве это не то, для чего нужен CoordinatorLayout? - person TheRealChx101; 25.09.2019

Вы можете импортировать образец проекта Google в Android Studio, нажав Файл> Импортировать образец ...

Импортировать образец

Этот пример содержит представление FloatingActionButton, которое наследуется от FrameLayout.

Редактировать С помощью новой библиотеки поддержки дизайна вы можете реализовать это, как показано в этом примере: https://github.com/chrisbanes/cheesesquare

person Roel    schedule 30.01.2015
comment
У вас должен быть android-21 для его запуска. - person Yuliia Ashomok; 02.11.2015
comment
Вам следует использовать библиотеку поддержки дизайна, если вы хотите использовать FloatingActionButton. См. Сырный квадрат Google. - person Roel; 03.11.2015

AppCompat 22 поддерживает FAB для старых устройств.

Добавьте новую библиотеку поддержки в свой build.gradle (приложение):

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

Затем вы можете использовать его в своем xml:

<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_more"
    app:elevation="6dp"
    app:pressedTranslationZ="12dp" />

Чтобы использовать свойства elevation и pressedTranslationZ, необходимо пространство имен app, поэтому добавьте это пространство имен в свой макет: xmlns:app="http://schemas.android.com/apk/res-auto"

person Oded Breiner    schedule 17.06.2015
comment
добавить информацию о пространстве имен app - person Lukasz 'Severiaan' Grela; 07.07.2015

Теперь он является частью официальной библиотеки поддержки дизайна.

В вашем Gradle:

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

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

person Veronnie    schedule 29.05.2015
comment
Ваш ответ немного неясен и расплывчат, не могли бы вы объяснить, что является частью DSL, и, возможно, процитировать соответствующую информацию с этой страницы. - person SuperBiasedMan; 29.05.2015
comment
Извините, я видел много ссылок на внешние библиотеки, поэтому хочу указать на официальную библиотеку. Библиотека может создать только кнопку, но позиционирование остается за разработчиками. Так что мой пост не очень актуален, извините. - person Veronnie; 01.06.2015

Попробуйте эту библиотеку (javadoc здесь), минимальный уровень API - 7:

dependencies {
    compile 'com.shamanland:fab:0.0.8'
}

Он предоставляет единый виджет с возможностью настройки с помощью темы, xml или java-кода.

lightмежду

Очень просто использовать. Доступны реализации normal и mini в соответствии с шаблоном Promoted Actions.

<com.shamanland.fab.FloatingActionButton
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@drawable/ic_action_my"
    app:floatingActionButtonColor="@color/my_fab_color"
    app:floatingActionButtonSize="mini"
    />

Попробуйте скомпилировать демонстрационное приложение. Вот исчерпывающий пример: светлая и темная темы, использование с ListView, выравнивание между двумя видами.

person Oleksii K.    schedule 02.08.2014
comment
Просто чтобы добавить к этому ответу ^ Вы также можете использовать другие доступные библиотеки обратного порта, например: github.com/FaizMalkani/FloatingActionButton и github.com/makovkastar/FloatingActionButton. И то, и другое может показаться более обоснованным. Но просто следуйте подробному представлению из источника, указанного в этом ответе. Работает отлично. - person John Shelley; 30.09.2014
comment
это официальная библиотека? - person Cocorico; 15.11.2014
comment
официальной библиотеки нет. это моя библиотека с открытыми исходниками. - person Oleksii K.; 15.11.2014
comment
Эта кнопка с плавающим действием - плохой пример того, как ее реализовать. Он не соответствует истинным правилам материального дизайна. - person Michael; 13.01.2015
comment
@ Майк Милла, что не так с этой библиотекой? какие требования не выполняются? - person Oleksii K.; 13.01.2015
comment
@OleksiiKropachov: тень неверно пропорциональна и значок слишком большой. Я хочу сказать, что это выглядит отрывочно. Это лучшая реализация, более близкая к руководящим принципам (скомпилируйте 'com.getbase: Floatingactionbutton: 1.5.1'), это лучший вариант (gist.github.com/Jogan/) - person Michael; 13.01.2015
comment
@MikeMilla, эти скриншоты взяты из pre-lollipop, с API 21, которое я использовал свойство высоты. Вы также можете вручную контролировать внутренний размер значка (24dp). - person Oleksii K.; 13.01.2015
comment
Могу ли я использовать эту библиотеку с Eclipse? Я не использую Android Studio для этой зависимости Gradle, и я не могу найти банку для использования с eclipse. - person Min Naing Oo; 02.03.2015
comment
вы можете поймать aar файл из центра maven: search.maven.org/remotecontent?filepath=com/shamanland/fab/ - person Oleksii K.; 02.03.2015

Вот еще одна бесплатная библиотека плавающих кнопок действий для Android. Он имеет множество настроек и требует SDK версии 9 и выше.

введите описание изображения здесь

Полное демонстрационное видео

dependencies {
    compile 'com.scalified:fab:1.1.2'
}
person Vladyslav Baidak    schedule 06.02.2015
comment
Вопрос не в том, как использовать FAB, а в том, как вы позиционируете его так, чтобы он охватил два представления. Вздох. - person SMBiggs; 16.09.2016

Упростите добавление плавающей кнопки действия с помощью TextView, предоставив округленный фон xml. - Добавить компиляцию com.android.support:design:23.1.1 в файл Gradle

  • Используйте CoordinatorLayout в качестве корневого представления.
  • Перед завершением CoordinatorLayout введите textView.
  • Внутри Drawable нарисуйте круг.

Circle Xml - это

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

    <solid
        android:color="@color/colorPrimary"/>
    <size
        android:width="30dp"
        android:height="30dp"/>
</shape>

Макет xml есть

<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent">


<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:weightSum="5"
    >

    <RelativeLayout
        android:id="@+id/viewA"
        android:layout_height="0dp"
        android:layout_width="match_parent"
        android:layout_weight="1.6"
        android:background="@drawable/contact_bg"
        android:gravity="center_horizontal|center_vertical"
        >
        </RelativeLayout>

    <LinearLayout
        android:layout_height="0dp"
        android:layout_width="match_parent"
        android:layout_weight="3.4"
        android:orientation="vertical"
        android:padding="16dp"
        android:weightSum="10"
        >

        <LinearLayout
            android:layout_height="0dp"
            android:layout_width="match_parent"
            android:layout_weight="1"
            >
            </LinearLayout>

        <LinearLayout
            android:layout_height="0dp"
            android:layout_width="match_parent"
            android:layout_weight="1"
            android:weightSum="4"
            android:orientation="horizontal"
            >
            <TextView
                android:layout_height="match_parent"
                android:layout_width="0dp"
                android:layout_weight="1"
                android:text="Name"
                android:textSize="22dp"
                android:textColor="@android:color/black"
                android:padding="3dp"
                />

            <TextView
                android:id="@+id/name"
                android:layout_height="match_parent"
                android:layout_width="0dp"
                android:layout_weight="3"
                android:text="Ritesh Kumar Singh"
                android:singleLine="true"
                android:textSize="22dp"
                android:textColor="@android:color/black"
                android:padding="3dp"
                />

            </LinearLayout>



        <LinearLayout
            android:layout_height="0dp"
            android:layout_width="match_parent"
            android:layout_weight="1"
            android:weightSum="4"
            android:orientation="horizontal"
            >
            <TextView
                android:layout_height="match_parent"
                android:layout_width="0dp"
                android:layout_weight="1"
                android:text="Phone"
                android:textSize="22dp"
                android:textColor="@android:color/black"
                android:padding="3dp"
                />

            <TextView
                android:id="@+id/number"
                android:layout_height="match_parent"
                android:layout_width="0dp"
                android:layout_weight="3"
                android:text="8283001122"
                android:textSize="22dp"
                android:textColor="@android:color/black"
                android:singleLine="true"
                android:padding="3dp"
                />

        </LinearLayout>



        <LinearLayout
            android:layout_height="0dp"
            android:layout_width="match_parent"
            android:layout_weight="1"
            android:weightSum="4"
            android:orientation="horizontal"
            >
            <TextView
                android:layout_height="match_parent"
                android:layout_width="0dp"
                android:layout_weight="1"
                android:text="Email"
                android:textSize="22dp"
                android:textColor="@android:color/black"
                android:padding="3dp"
                />

            <TextView
                android:layout_height="match_parent"
                android:layout_width="0dp"
                android:layout_weight="3"
                android:text="[email protected]"
                android:textSize="22dp"
                android:singleLine="true"
                android:textColor="@android:color/black"
                android:padding="3dp"
                />

        </LinearLayout>


        <LinearLayout
            android:layout_height="0dp"
            android:layout_width="match_parent"
            android:layout_weight="1"
            android:weightSum="4"
            android:orientation="horizontal"
            >
            <TextView
                android:layout_height="match_parent"
                android:layout_width="0dp"
                android:layout_weight="1"
                android:text="City"
                android:textSize="22dp"
                android:textColor="@android:color/black"
                android:padding="3dp"
                />

            <TextView
                android:layout_height="match_parent"
                android:layout_width="0dp"
                android:layout_weight="3"
                android:text="Panchkula"
                android:textSize="22dp"
                android:textColor="@android:color/black"
                android:singleLine="true"
                android:padding="3dp"
                />

        </LinearLayout>

    </LinearLayout>

</LinearLayout>


    <TextView
        android:id="@+id/floating"
        android:transitionName="@string/transition_name_circle"
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:layout_margin="16dp"
        android:clickable="false"
        android:background="@drawable/circle"
        android:elevation="10dp"
        android:text="R"
        android:textSize="40dp"
        android:gravity="center"
        android:textColor="@android:color/black"
        app:layout_anchor="@id/viewA"
        app:layout_anchorGravity="bottom"/>

        </android.support.design.widget.CoordinatorLayout>

Нажмите здесь, чтобы увидеть, как это будет выглядеть

person Ritesh    schedule 21.01.2016

Добавьте это в свой файл Gradle

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:23.0.0'
    compile 'com.android.support:design:23.0.1'
}

Это к вашему activity_main.xml

<android.support.design.widget.CoordinatorLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <LinearLayout android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical">

            <LinearLayout
                android:id="@+id/viewOne"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_weight="0.6"
                android:background="@android:color/holo_blue_light"
                android:orientation="horizontal"/>

            <LinearLayout
                android:id="@+id/viewTwo"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_weight="0.4"
                android:background="@android:color/holo_orange_light"
                android:orientation="horizontal"/>

        </LinearLayout>

        <android.support.design.widget.FloatingActionButton
            android:id="@+id/floatingButton"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_margin="16dp"
            android:clickable="true"
            android:src="@drawable/ic_done"
            app:layout_anchor="@id/viewOne"
            app:layout_anchorGravity="bottom|right|end"
            app:backgroundTint="#FF0000"
            app:rippleColor="#FFF" />

    </android.support.design.widget.CoordinatorLayout>

Вы можете найти полный пример проекта студии Android для загрузки по адресу http://www.ahotbrew.com/android-floating-action-button/

person Gurinder Singh    schedule 15.09.2015

вот рабочий код.

Я использую appBarLayout для привязки своего элемента FloatingActionButton. надеюсь, что это может быть полезно.

КОД XML.

<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <android.support.design.widget.AppBarLayout
        android:id="@+id/appbar"
        android:layout_height="192dp"
        android:layout_width="match_parent">

        <android.support.design.widget.CollapsingToolbarLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            app:toolbarId="@+id/toolbar"
            app:titleEnabled="true"
            app:layout_scrollFlags="scroll|enterAlways|exitUntilCollapsed"
            android:id="@+id/collapsingbar"
            app:contentScrim="?attr/colorPrimary">

            <android.support.v7.widget.Toolbar
                app:layout_collapseMode="pin"
                android:id="@+id/toolbarItemDetailsView"
                android:layout_height="?attr/actionBarSize"
                android:layout_width="match_parent"></android.support.v7.widget.Toolbar>
        </android.support.design.widget.CollapsingToolbarLayout>
    </android.support.design.widget.AppBarLayout>

    <android.support.v4.widget.NestedScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layout_behavior="android.support.design.widget.AppBarLayout$ScrollingViewBehavior">

        <android.support.constraint.ConstraintLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            tools:context="com.example.rktech.myshoplist.Item_details_views">
            <RelativeLayout
                android:orientation="vertical"
                android:focusableInTouchMode="true"
                android:layout_width="match_parent"
                android:layout_height="match_parent">


                <!--Put Image here -->
                <ImageView
                    android:visibility="gone"
                    android:layout_marginTop="56dp"
                    android:layout_width="match_parent"
                    android:layout_height="230dp"
                    android:scaleType="centerCrop"
                    android:src="@drawable/third" />


                <ScrollView
                    android:layout_width="match_parent"
                    android:layout_height="match_parent">

                    <RelativeLayout
                        android:layout_width="match_parent"
                        android:layout_height="match_parent"
                        android:layout_gravity="center"
                        android:orientation="vertical">

                        <android.support.v7.widget.CardView
                            android:layout_width="match_parent"
                            android:layout_height="match_parent"
                            app:cardCornerRadius="4dp"
                            app:cardElevation="4dp"
                            app:cardMaxElevation="6dp"
                            app:cardUseCompatPadding="true">

                            <RelativeLayout
                                android:layout_width="match_parent"
                                android:layout_height="match_parent"
                                android:layout_margin="8dp"
                                android:padding="3dp">


                                <LinearLayout
                                    android:layout_width="match_parent"
                                    android:layout_height="match_parent"
                                    android:orientation="vertical">


                                    <TextView
                                        android:id="@+id/txtDetailItemTitle"
                                        style="@style/TextAppearance.AppCompat.Title"
                                        android:layout_width="match_parent"
                                        android:layout_height="wrap_content"
                                        android:layout_marginLeft="4dp"
                                        android:text="Title" />

                                    <LinearLayout
                                        android:layout_width="match_parent"
                                        android:layout_height="match_parent"
                                        android:layout_marginTop="8dp"
                                        android:orientation="horizontal">

                                        <TextView
                                            android:id="@+id/txtDetailItemSeller"
                                            style="@style/TextAppearance.AppCompat.Subhead"
                                            android:layout_width="wrap_content"
                                            android:layout_height="wrap_content"
                                            android:layout_marginLeft="4dp"
                                            android:layout_weight="1"
                                            android:text="Shope Name" />

                                        <TextView
                                            android:id="@+id/txtDetailItemDate"
                                            style="@style/TextAppearance.AppCompat.Subhead"
                                            android:layout_width="wrap_content"
                                            android:layout_height="wrap_content"
                                            android:layout_marginRight="4dp"
                                            android:gravity="right"
                                            android:text="Date" />


                                    </LinearLayout>

                                    <TextView
                                        android:id="@+id/txtDetailItemDescription"
                                        style="@style/TextAppearance.AppCompat.Medium"
                                        android:layout_width="match_parent"
                                        android:minLines="5"
                                        android:layout_height="wrap_content"
                                        android:layout_marginLeft="4dp"
                                        android:layout_marginTop="16dp"
                                        android:text="description" />

                                    <LinearLayout
                                        android:layout_width="match_parent"
                                        android:layout_height="wrap_content"
                                        android:layout_marginBottom="8dp"
                                        android:orientation="horizontal">

                                        <TextView
                                            android:id="@+id/txtDetailItemQty"
                                            style="@style/TextAppearance.AppCompat.Medium"
                                            android:layout_width="wrap_content"
                                            android:layout_height="wrap_content"
                                            android:layout_marginLeft="4dp"
                                            android:layout_weight="1"
                                            android:text="Qunatity" />

                                        <TextView
                                            android:id="@+id/txtDetailItemMessure"
                                            style="@style/TextAppearance.AppCompat.Medium"
                                            android:layout_width="wrap_content"
                                            android:layout_height="wrap_content"
                                            android:layout_marginRight="4dp"
                                            android:layout_weight="1"
                                            android:gravity="right"
                                            android:text="Messure in Gram" />
                                    </LinearLayout>


                                    <TextView
                                        android:id="@+id/txtDetailItemPrice"
                                        style="@style/TextAppearance.AppCompat.Headline"
                                        android:layout_width="match_parent"
                                        android:layout_height="wrap_content"
                                        android:layout_marginRight="4dp"
                                        android:layout_weight="1"
                                        android:gravity="right"
                                        android:text="Price" />
                                </LinearLayout>

                            </RelativeLayout>
                        </android.support.v7.widget.CardView>
                    </RelativeLayout>
                </ScrollView>
            </RelativeLayout>

        </android.support.constraint.ConstraintLayout>

    </android.support.v4.widget.NestedScrollView>

    <android.support.design.widget.FloatingActionButton
        android:layout_width="wrap_content"
        app:layout_anchor="@id/appbar"
        app:fabSize="normal"
        app:layout_anchorGravity="bottom|right|end"
        android:layout_marginEnd="@dimen/_6sdp"
        android:src="@drawable/ic_done_black_24dp"
        android:layout_height="wrap_content" />

</android.support.design.widget.CoordinatorLayout>

Теперь, если вы вставите код выше. вы увидите следующий результат на своем устройстве. Изображение результата

person Rk215 Tech    schedule 15.03.2018