Intereting Posts
Библиотека обработки изображений для Android и Java Как запустить пользовательское правило в Android.mk перед компиляцией? Выполнение не выполнено для задачи ': app: compileDebugKotlin' Добавление веб-ссылки в виджет TextView Сделать привязку ViewPager с более коротким перетаскиванием Разрабатывая разметку xml динамически несколько раз, как я могу различать или идентифицировать виджеты Button? Отображать встроенные клавиши emoji для ввода метода Android – Как открыть почтовый клиент напрямую Android-браузер завораживает события для двух кранов в быстрой последовательности Синхронизация репо Обмен файлами между телефоном Android и ПК GPS Manifest: GPS в приложении не является обязательным, хотите сделать его доступным для GPS меньше устройств тоже Поддерживает ли Android одновременно несколько HTTP-запросов? Android: отображение изображения с SD CARD Как безопасно закрыть курсор и базу данных?

FloatingActionButton с текстом вместо изображения

Я пытаюсь выяснить, как можно модифицировать FloatingActionButton из библиотеки поддержки Android. Можно ли использовать текст вместо изображения?

Что-то вроде этого:

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

Я вижу, что он расширяет ImageButton, поэтому я не думаю. Я прав?

Является ли это правильным с точки зрения материального дизайна в целом?

Solutions Collecting From Web of "FloatingActionButton с текстом вместо изображения"

Спасибо всем.

Вот простой способ, который я нашел для этого вопроса. Работает правильно для Android 4+, для Android 5+ добавлен специальный параметр android: elevation для рисования TextView над FloatingActionButton.

<FrameLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="bottom|right"> <android.support.design.widget.FloatingActionButton android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@android:color/transparent" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:text="@android:string/ok" android:elevation="16dp" android:textColor="@android:color/white" android:textAppearance="?android:attr/textAppearanceMedium" /> </FrameLayout> 

Конвертировать текст в растровое изображение и использовать его. Его очень легко.

 fab.setImageBitmap(textAsBitmap("OK", 40, Color.WHITE)); 

// метод преобразования текста в изображение

 public static Bitmap textAsBitmap(String text, float textSize, int textColor) { Paint paint = new Paint(ANTI_ALIAS_FLAG); paint.setTextSize(textSize); paint.setColor(textColor); paint.setTextAlign(Paint.Align.LEFT); float baseline = -paint.ascent(); // ascent() is negative int width = (int) (paint.measureText(text) + 0.0f); // round int height = (int) (baseline + paint.descent() + 0.0f); Bitmap image = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(image); canvas.drawText(text, 0, baseline, paint); return image; } 

Вы не можете установить текст для FloatingActionButton из библиотеки поддержки, но то, что вы можете сделать, – это создать текстовое изображение непосредственно из студии android: File -> New -> Image Asset , а затем использовать его для вашей кнопки.

В терминах Material Design ; Они не упоминают использование текста с FloatingActionButton , и я не вижу причин для этого, поскольку у вас на самом деле нет места для текста.

FAB обычно используются в CoordinatorLayout s. Вы можете использовать это:

 <android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"> <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:layout_margin="@dimen/fab_margin" app:backgroundTint="@color/colorPrimary" /> <TextView android:layout_height="wrap_content" android:layout_width="wrap_content" android:text="OK" android:elevation="6dp" android:textSize="18dp" android:textColor="#fff" app:layout_anchor="@id/fab" app:layout_anchorGravity="center"/> </android.support.design.widget.CoordinatorLayout> 

Вот что делает работа

 app:layout_anchor="@id/fab" app:layout_anchorGravity="center" 

Результат:

Результат

Если вы используете какой-то layout_behavior для своего FAB, вам придется создать аналогичное layout_behavior для TextView