Плавающая кнопка действия в Android с иконкой не в центре - PullRequest
0 голосов
/ 01 июля 2019

Это XML:

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

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">

<TextView
    android:id="@+id/test"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentRight="true"
    android:text="Hello World!" />

<android.support.design.widget.FloatingActionButton
    android:layout_width="40dp"
    android:layout_height="40dp"
    android:layout_marginBottom="4dp"
    android:scaleType="center"
    android:src="@drawable/button_floating_add"
    app:borderWidth="0dp"
    app:elevation="8dp" />

</RelativeLayout>

Вывод выглядит так:

API-28

Я предполагаю, что это происходит из-заизменить в версии API.Я использую compileSDK и targetSDK версии как 28, а также библиотеки дизайна и appcompat как 28.0.0.Когда я изменяю версию API и библиотек дизайна обратно на 26, вывод выглядит так:

API 26

Ответы [ 5 ]

3 голосов
/ 01 июля 2019

Анатомия кнопки с плавающим действием состояния

Контейнеры FAB бывают двух размеров:

  1. По умолчанию (56 x 56dp)
  2. Mini (40 x 40dp)

Таким образом, в вашем случае вы хотите использовать небольшой FAB.Но вы не определяете это с layout_width и layout_height, потому что это только портит отступы.Вы должны использовать атрибут app:fabSize и установить его на SIZE_MINI:

<android.support.design.widget.FloatingActionButton
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    app:fabSize="mini"
    ... />
1 голос
/ 01 июля 2019

Вы пытались использовать Android Asset Studio? У них есть почти все основные возможности для рисования любого размера и плотности. вот ссылка https://developer.android.com/studio/write/image-asset-studio.html

0 голосов
/ 01 июля 2019

Потрясающий вид - это особый вид, и вы должны соблюдать его требования.При этом его ширина и высота должны быть "wrap_content".Если вы хотите, чтобы ваш потрясающий вариант был мини-версией, вы можете добавить app:fabSize="mini".Вы можете использовать layout_gravity, чтобы установить его положение на экране (в моем примере ниже это будет в правом нижнем углу).Также значок должен быть 24dp x 24dp.Я рекомендую скачать ваши иконки с https://material.io/tools/icons/?style=baseline, где вы можете выбрать размер изображения и все такое.

<com.google.android.material.floatingactionbutton.FloatingActionButton
  android:id="@+id/fab"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:layout_gravity="bottom|end"
  android:layout_margin="@dimen/fab_margin"
  android:onClick="@{() -> viewModel.onFabPressed()}"
  app:srcCompat="@drawable/ic_baseline_add_24px"/> 

Приведенный выше XML-код является рабочим образцом одного из моих приложений.Надеюсь, это поможет и удачного дня!

0 голосов
/ 01 июля 2019

Можете ли вы попробовать эти атрибуты,

android:layout_gravity="bottom|center"
android:layout_centerHorizontal="true"
android:scaleType="fitCenter"
0 голосов
/ 01 июля 2019

используйте это свойство в соответствии с высотой и шириной представления

app:fabCustomSize="40dp"

И предложить файл ..svg вместо .png.

...