Я пытаюсь поместить изображение (в качестве фона) на кнопку и добавить динамически, в зависимости от того, что происходит во время выполнения, какой-нибудь текст над / над изображением.
Если я использую, ImageButton
у меня даже нет возможности добавить текст. Если я использую, Button
я могу добавить текст, но только определить изображение с android:drawableBottom
и подобными атрибутами XML, как определено здесь .
Однако эти атрибуты объединяют текст и изображение только в x- и y-измерениях, что означает, что я могу нарисовать изображение вокруг своего текста, но не под / под моим текстом (с осью z, определенной как выходящая из дисплея).
Любые предложения о том, как это сделать? Одной из идей будет расширение Button
или ImageButton
переопределение draw()
-метода. Но с моим текущим уровнем знаний я действительно не знаю, как это сделать (2D-рендеринг). Может быть, кто-то с большим опытом знает решение или хотя бы несколько указателей для начала?
Ответы:
Вы можете позвонить
setBackground()
на ,Button
чтобы установить фон кнопки.Любой текст появится над фоном.
Если вы ищете что-то похожее в XML, есть
android:background
атрибут :, который работает так же.источник
Для пользователей, которые просто хотят поместить Background, Icon-Image и Text в один
Button
из разных файлов: установить наButton
фоне, атрибуты drawableTop / Bottom / Rigth / Left и padding .Для более сложной аранжировки вы также можете использовать
RelativeLayout
(или любой другой макет) и сделать его кликабельным.Учебное пособие: Отличное учебное пособие, которое охватывает оба случая: http://izvornikod.com/Blog/tabid/82/EntryId/8/Creating-Android-button-with-image-and-text-using-relative-layout.aspx
источник
b.setCompoundDrawablesWithIntrinsicBound(null,R.drawable.home_icon_test,null,null)
вместоandroid:drawableTop
иb.setPadding(0,32,0,0)
вместоandroid:paddingTop
.Есть гораздо лучшее решение этой проблемы.
Просто нормальный
Button
и использоватьdrawableLeft
и теgravity
атрибуты.Таким образом, вы получаете кнопку, которая отображает значок в левой части кнопки, а текст в правой части значка по вертикали .
источник
источник
Просто используйте LinearLayout и сделайте вид, что это
Button
- настройка,background
а ключ кликабелен :источник
android:onClick
к вашему мнениюпросто замени
с
изж довольно хороший трюк ..;)
источник
Я выбрал подход, отличающийся от изложенного здесь, и он работает очень хорошо, поэтому я хотел поделиться им.
Я использую стиль для создания пользовательской кнопки с изображением слева и текстом в центре справа. Просто следуйте 4 "простым шагам" ниже:
I. Создайте свои 9 патчей, используя как минимум 3 разных файла PNG и инструмент, который у вас есть по адресу: /YOUR_OWN_PATH/android-sdk-mac_x86/tools/./draw9patch. После этого вы должны иметь:
button_normal.9.png, button_focused.9.png и button_pressed.9.png
Затем загрузите или создайте иконку PNG 24x24.
ic_your_icon.png
Сохраните все в папке drawable / в вашем проекте Android.
II. Создайте файл XML с именем button_selector.xml в своем проекте в папке drawable /. Состояния должны быть такими:
III. Перейдите в папку values / и откройте или создайте файл styles.xml и создайте следующий код XML:
ButtonNormalTextWithIcon является «дочерним стилем», потому что он расширяет ButtonNormalText («родительский стиль»).
Обратите внимание, что изменяя drawableLeft в стиле ButtonNormalTextWithIcon на drawableRight, drawableTop или drawableBottom, вы можете поместить значок в другое положение по отношению к тексту.
Внутривенно Перейдите к макету / папке, где у вас есть XML для пользовательского интерфейса, и перейдите к кнопке, где вы хотите применить стиль и сделать его похожим на это:
И ... вуаля! Вы получили свою кнопку с изображением на левой стороне.
Для меня это лучший способ сделать это! делая это таким образом, вы можете управлять размером текста кнопки отдельно от значка, который вы хотите отобразить, и использовать один и тот же фон для рисования для нескольких кнопок с разными значками, соблюдая правила Android UI, используя стили.
Вы также можете создать тему для своего приложения и добавить к ней «родительский стиль», чтобы все кнопки выглядели одинаково, и применять «дочерний стиль» со значком только там, где это необходимо.
источник
источник
Вы можете использовать
drawableTop
(такжеdrawableLeft
и т. Д.) Для изображения и установить текст под изображением, добавивgravity
left|center_vertical
источник
Важное обновление
Для векторного рисования
Если вы используете векторное рисование, то вы должны
Он был выпущен в версии
1.1.0-alpha01
, поэтому версия appcompat должна быть как минимум1.1.0-alpha01
. Текущая последняя версия1.1.0-alpha02
, используйте последние версии для большей надежности, см. Примечания к выпуску - ссылка .Используйте
AppCompatTextView
/AppCompatButton
/AppCompatEditText
app:drawableLeftCompat
,app:drawableTopCompat
,app:drawableRightCompat
,app:drawableBottomCompat
,app:drawableStartCompat
иapp:drawableEndCompat
Для регулярного рисования
Если вам не нужно рисовать вектор, то вы можете
android:drawableLeft
,android:drawableRight
,android:drawableBottom
,android:drawableTop
TextView
,Button
&EditText
илиAppCompat
классы.Вы можете добиться выхода, как показано ниже -
источник
xmlns:app="http://schemas.android.com/apk/res-auto"
пространство имен и не вижу этих приложений совместимых вещей.For vector drawable
пункт.Возможно, мое решение подойдет многим пользователям, я надеюсь на это.
Я предлагаю сделать TextView с вашим стилем. Он работает для меня отлично, и имеет все функции, как кнопка.
Прежде всего, давайте создадим стиль кнопок, который вы можете использовать везде ... Я создаю button_with_hover.xml
Во-вторых, давайте создадим кнопку просмотра текста.
И это результат. Затем стилизуйте свою пользовательскую кнопку с любыми цветами или любыми другими свойствами и полями. Удачи
источник
http://www.mokasocial.com/2010/04/create-a-button-with-an-image-and-text-android/
источник
Этот код работает для меня отлично
источник
Вы можете использовать это:
в том, что я поставил изображение, а
background
также добавил текст ..!источник
Или вы можете программно:
источник
источник