Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.80
Termit___
5 / 5 / 0
Регистрация: 02.04.2013
Сообщений: 85
#1

Наложение изображений на кнопке из кода - Android

10.04.2013, 17:48. Просмотров 1287. Ответов 10
Метки нет (Все метки)

Други, подскажите начинающему. Как можно наложить на кнопку бэкграунд и иконку. Т.е. 2 изображения из кода. Кнопки создаются динамически при старте приложения. И нужно, чтобы в соответствии с определенным условием иконка на кнопках была нужная. Пролистал кучу сайтов и страниц форума. Самое близкое нашел задание background как фон кнопки(setBackgroundResourse(R.drawable.ИМЯ_КАРТИНКИ), и использование src изображения поверх бэкграунда. Но src возможно только из настроек в layout файле или другом xml, на сколько я понимаю.
Есть какие то идеи как можно реализовать наложение иконки на кнопку в условии if из кода при ее создании? Буду благодарен за ответы.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
10.04.2013, 18:51     Наложение изображений на кнопке из кода #2
setCompoundDrawablesWithIntrinsicBounds (int left, int top, int right, int bottom)
Parameters
left Resource identifier of the left Drawable.
top Resource identifier of the top Drawable.
right Resource identifier of the right Drawable.
bottom Resource identifier of the bottom Drawable.
Termit___
5 / 5 / 0
Регистрация: 02.04.2013
Сообщений: 85
11.04.2013, 10:48  [ТС]     Наложение изображений на кнопке из кода #3
Это уже ближе к теме. =) Подскажите еще как сделать чтобы значение String (R.drawable.icon) - оно записано в xml фале которое парсится в программу, как string, можно было преобразовать в int(R.drawable.icon), чтобы программа поняла его.
Или сразу как то парсить его в int.
Добываю значение таким образом:
parser.getAttributeValue(null, "icon");
parser - это парсер.
"icon" - это значение в xml файле(равное например R.drawable.icon1, R.drawable.icon2...)

И второй небольшой вопрос. Как програмно сделать отступы от краев кнопки для этой иконки в коде?
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
11.04.2013, 11:04     Наложение изображений на кнопке из кода #4
resources.getIdentifier(String name, String defType, String defPackage)
Return a resource identifier for the given resource name.

setCompoundDrawablePadding(int)
Termit___
5 / 5 / 0
Регистрация: 02.04.2013
Сообщений: 85
11.04.2013, 12:01  [ТС]     Наложение изображений на кнопке из кода #5
Извените, нельзя ли поподробнее? Не получается.
Делаю так:
String icon = parser2.getAttributeValue(null, "icon"); //получаем из xml значение нужной строки(icon)=R.drawable.icon
resources.getIdentifier(String name, String defType, String defPackage); //как то сюда это надо прилепить
setCompoundDrawablesWithIntrinsicBounds(icon, 0, 0, 0);
Нужно сделать как то чтобы icon типа string попало в icon типа int в 3 строке. Причем со сдвигом(setCompoundDrawablePadding(int))

Добавлено через 7 минут
Если явно прописать btnNew.setCompoundDrawablesWithIntrinsicBounds(R.drawable.icon, 0, 0, 0); то иконка добавится на все кнопки, но вся эта конструкция в теле цикла и должны добавляться разные иконки с каждым циклом.
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
11.04.2013, 13:53     Наложение изображений на кнопке из кода #6
getIdentifier("icon", "drawable", context.getPackageName());
Termit___
5 / 5 / 0
Регистрация: 02.04.2013
Сообщений: 85
11.04.2013, 15:00  [ТС]     Наложение изображений на кнопке из кода #7
на контекст ругается.

Добавлено через 11 минут
setCompoundDrawablePadding(int) с каким типом данных работает? Drawable? Как сделать чтобы у R.drawable.icon на кнопке btnNew был сдвиг?
делаю
btnNew.setCompoundDrawablePadding(10);
не реагирует.всеравно приклеена к левому углу.
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
11.04.2013, 16:25     Наложение изображений на кнопке из кода #8
Цитата Сообщение от Termit___ Посмотреть сообщение
на контекст ругается.
сделайте чтобы не ругалось.


Цитата Сообщение от Termit___ Посмотреть сообщение
setCompoundDrawablePadding(int) с каким типом данных работает? Drawable? Как сделать чтобы у R.drawable.icon на кнопке btnNew был сдвиг?
делаю
btnNew.setCompoundDrawablePadding(10);
не реагирует.всеравно приклеена к левому углу.
смотрите документацию
Termit___
5 / 5 / 0
Регистрация: 02.04.2013
Сообщений: 85
11.04.2013, 17:54  [ТС]     Наложение изображений на кнопке из кода #9
Все. Победил я эту иконку очень просто:
btnNew.setPadding(10,9,8,7);
До этого пытался не в том месте это воткнуть, вот и не получалось.
Никакого мазахизма с getIdentifier не понадобилось.
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
11.04.2013, 18:42     Наложение изображений на кнопке из кода #10
да, сори, тот метод что я написал задает расстояние между картинкой и текстом, а setPadding задает общий падинг для кнопки.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.04.2013, 15:57     Наложение изображений на кнопке из кода
Еще ссылки по теме:

Подсчет кликов по кнопке Android
Android Несколько надписей на кнопке
Android Наложение на ScrollView
Android Анимация по кнопке
Применить стиль к кнопке Android

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Termit___
5 / 5 / 0
Регистрация: 02.04.2013
Сообщений: 85
16.04.2013, 15:57  [ТС]     Наложение изображений на кнопке из кода #11
Еще вопрос в тему: как изменить размер вставляемой картнки?
Yandex
Объявления
16.04.2013, 15:57     Наложение изображений на кнопке из кода
Ответ Создать тему
Опции темы

Текущее время: 17:58. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru