Пользовательская кнопка Android с изображением и текстом внутри?

Я ищу создать пользовательскую кнопку. Эта кнопка идеально имела бы изображение слева и текстовое изображение справа. Как бы я это сделал?

Самый быстрый способ

Создавать кликабельный вид с помощью кнопки, выделяемой в качестве фона, который содержит ImageView и TextView.

<RelativeLayout android:clickable="true" android:background="@android:drawable/btn_default" android:layout_width="wrap_content" android:layout_height="wrap_content"> <ImageView android:id="@+id/image" android:layout_alignParentLeft="true" android:layout_centerVertical="true" android:src="@android:drawable/ic_input_add" android:layout_width="wrap_content" android:layout_height="wrap_content"> </ImageView> <TextView android:id="@+id/text" android:text="Sample text" android:textAppearance="?android:attr/textAppearanceButton" android:layout_toRightOf="@id/image" android:layout_centerVertical="true" android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView> </RelativeLayout> 

Другой путь

Создайте свой собственный класс, добавьте RelativeLayout, настройте контент, как указано выше, добавьте собственные методы для установки текста, изображения и т. Д., И все. Используйте свой собственный макет.

Вы можете использовать такой код для этой задачи:

 <Button android:layout_width="fill_parent" android:layout_height="50dp" android:id="@+id/btnLogin" android:text="@string/text" android:gravity="center" android:drawableLeft="@drawable/your_image" android:background="@drawable/login"/> // this is for nice background - *.9.png 

Создайте xml с помощью макета, который вы хотите, создайте шаблон, который выглядит так, как будто вы хотите, чтобы кнопка выглядела, добавьте рисованный в качестве фона Linear Layout и раздуйте xml для пользовательского представления.

Пример:

  <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="true" > <shape> <solid android:color="#f3ae1b" /> <stroke android:width="1dp" android:color="#bb6008" /> <corners android:radius="3dp" /> <padding android:left="10dp" android:top="10dp" android:right="10dp" android:bottom="10dp" /> </shape> </item> <item> <shape> <gradient android:startColor="#f3ae1b" android:endColor="#bb6008" android:angle="270" /> <stroke android:width="1dp" android:color="#bb6008" /> <corners android:radius="4dp" /> <padding android:left="10dp" android:top="10dp" android:right="10dp" android:bottom="10dp" /> </shape> </item> </selector> 1  <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="true" > <shape> <solid android:color="#f3ae1b" /> <stroke android:width="1dp" android:color="#bb6008" /> <corners android:radius="3dp" /> <padding android:left="10dp" android:top="10dp" android:right="10dp" android:bottom="10dp" /> </shape> </item> <item> <shape> <gradient android:startColor="#f3ae1b" android:endColor="#bb6008" android:angle="270" /> <stroke android:width="1dp" android:color="#bb6008" /> <corners android:radius="4dp" /> <padding android:left="10dp" android:top="10dp" android:right="10dp" android:bottom="10dp" /> </shape> </item> </selector> 

Изменить: код для раздувания

 private LayoutInflater mInflater; mInflater = LayoutInflater.from(this); public LinearLayout yourButton; yourButton = (LinearLayout) mInflater.inflate(R.xml.yourButton, null); 

В макете Xml используйте эти доступные варианты макета и получите простые макеты. Следующая строка дает изображение в левой части текста.

android:drawableLeft="@drawable/image"

Если вы хотите написать код, чтобы сделать это, используйте setCompoundDrawables () класса Button, чтобы решить, где должен отображаться drawable относительно текста. Ищите API для более подробной информации.

Вы можете сделать это, используя NoboButton

Простой и быстрый способ создания андроидной кнопки с иконкой, радиусом, фоном

Библиотека url https://github.com/alex31n/NoboButton

Скриншот https://raw.githubusercontent.com/alex31n/NoboButton/master/Assets/button_screenshot.jpg