2015-10-08 3 views

ответ

5

fab.xml в drawable

<?xml version="1.0" encoding="utf-8"?> 

<shape xmlns:android="http://schemas.android.com/apk/res/android" 
    android:innerRadius="0dp" 
    android:shape="ring" 
    android:thicknessRatio="2" 
    android:useLevel="false" > 
    <solid android:color="@android:color/transparent" /> 

    <stroke 
     android:width="3dp" 
     android:color="@android:color/white" /> 
</shape> 

плавающей кнопки действий в layout

<android.support.design.widget.FloatingActionButton 
     android:id="@+id/buttton_float" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:src="@drawable/ic_action_social_notifications" 
     android:background="@drawable/fab" 
     android:layout_margin="@dimen/fab_margin" 
     android:layout_gravity="bottom|right" 
     app:fabSize="normal" 
     app:backgroundTint="@android:color/white" 
     app:rippleColor="@android:color/black" 
     app:borderWidth="0dp" 
     app:elevation="2dp" 
     app:pressedTranslationZ="12dp"/> 

Примечание: Обычай дизайн для FAB против руководящих принципов Google Материалов для Floating Action Button

+0

Во-первых, спасибо за ответ! Но я хочу добиться точно такого же рендеринга с черной сумкой вместо прозрачной. Я просто изменил «прозрачный» на «черный», и он заполнил мой FAB белым. Кто-нибудь знает, почему это работает с прозрачным цветом, но не с черным цветом? – MHogge

+1

try 'app: backgroundTint =" @ android: color/black "' in' android.support.design.widget.FloatingActionButton' –

+0

Я попытался установить backgroundTint на черный с сплошным цветом на прозрачный. Я получил черные границы с прозрачный фон, и когда я оставляю backgroundTint до черного и устанавливаю сплошной цвет на черный, вся моя кнопка становится черной.Тогда, если я устанавливаю backgroundTint на белый, а сплошной цвет - на черный, вся моя кнопка становится белой. это непонятно. :/ – MHogge

2

Сначала создайте ресурс формы .xml давайте назовем это ring.xml и поместите в него:

<?xml version="1.0" encoding="utf-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item> 
     <shape 
      xmlns:android="http://schemas.android.com/apk/res/android" 
      android:innerRadiusRatio="1" 
      android:shape="ring" 
      android:thicknessRatio="1" 
      android:useLevel="false"> 

      <solid android:color="#FFF"/> 
      <stroke 
       android:width="5dp" 
       android:color="#000"/> 
     </shape> 
    </item> 
    <item> 
     <bitmap xmlns:android="http://schemas.android.com/apk/res/android" 
       android:src="@drawable/ic_cast_light"/> 
    </item> 

</layer-list> 

Вам придется играть с толщиной и innerRadius атрибутов, чтобы получить это право, но это должно сделать это! Также источник растрового изображения - только наполнитель, вы хотите поместить свое изображение F.

Тогда где вы объявить ФАБ ссылочного ваше кольцо, как, например:

android:background="@drawable/ring" 

ИЛИ

В коде Java, выполните следующие действия:

FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); 
fab.setBackgroundResource(R.drawable.ring); 

Надеется, что это помогает!

+1

Как я знаю, fab button ** андроид: фон ** не работает, ** android: backgroundTint ** - это просто цвет фона. правильно? –

+3

И этот код не работает T-T. Спасибо за Ваш интерес. –

1

Если вы хотите установить границу кнопки «Поплавок», вы просто делаете это. Сначала нужно создать один XML-файл

fab_background.xml

<shape xmlns:android="http://schemas.android.com/apk/res/android" 
    android:innerRadius="0dp" 
    android:shape="ring" 
    android:thicknessRatio="2" 
    android:useLevel="false" > 

    <!--Here if you want to set transparent can set--> 
    <solid android:color="@color/white" /> 

    <!--Here you can set your fab button border color--> 
    <stroke 
     android:width="3dp" 
     android:color="@color/white" /> 
</shape> 

Затем после использования, как это в вашем файле макета XML.

main_activity.xml

<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:id="@+id/rl_content_main" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="@color/black"> 

    <LinearLayout 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_centerHorizontal="true" 
     android:layout_centerVertical="true" 
     android:padding="5dp" 
     android:background="@drawable/fab_background"> 

     <android.support.design.widget.FloatingActionButton 
      android:id="@+id/fab_map" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_gravity="center_vertical" 
      android:elevation="0dp" 
      android:src="@android:drawable/ic_media_play" 
      app:fabSize="normal" 
      app:elevation="0dp"/> 
    </LinearLayout> 

</RelativeLayout> 
+0

Ваш код работает нормально, но время предварительного просмотра его не будет отображаться в центре, оно имеет пространство справа. –

+0

, пожалуйста, покажите мне свой код. – Shailesh

+0

Я исправил это самостоятельно, спасибо за этот ответ. –

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