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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 17, средняя оценка - 4.82
dubok79
323 / 121 / 11
Регистрация: 01.11.2012
Сообщений: 586
#1

Можно ли изменять параметры разметки программно? - Android

04.11.2012, 19:26. Просмотров 2162. Ответов 13
Метки нет (Все метки)

Может не корректно озаглавил тему, но нужно вот что: у виджета есть разметка в которой написано android:background=@drawable/bg
можно ли как то в программном коде изменить bg на, например, bg1? Или есть какой другой способ. Т.е. задача стоит в том, что бы задний фон у виджета был разным в зависимости от настроек.
Спасибо за идеи и подсказки!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.11.2012, 19:26     Можно ли изменять параметры разметки программно?
Посмотрите здесь:

В чем преимущества и недостатки разметки UI при помощи XML Android
Явная загрузка разметки из xml для popup window Android
Можно ли редактировать текст программно? Android
Есть ли аналог процентов в разметки вида? Android
Подгрузка разной разметки Android
Как добавить дополнительные параметры к программно создаваемым кнопкам? Android
Приложение состоящее только из разметки Android
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
04.11.2012, 19:33     Можно ли изменять параметры разметки программно? #2
.setBackgroundResource(R.drawable.bg1);
dubok79
323 / 121 / 11
Регистрация: 01.11.2012
Сообщений: 586
04.11.2012, 22:17  [ТС]     Можно ли изменять параметры разметки программно? #3
Цитата Сообщение от V0v1k Посмотреть сообщение
.setBackgroundResource(R.drawable.bg1);
Спасибо. А есть ли возможность указать на ресурс, сформировать его имя из строки как например в VBA Me.Controls('Button1')?

Добавлено через 15 минут
Цитата Сообщение от V0v1k Посмотреть сообщение
.setBackgroundResource(R.drawable.bg1);
Что то я никак не пойму, что перед точкой должно стоять? Наверное сам layout которому надо прилепить новый background, но как к нему получить доступ....

Добавлено через 50 минут
Нахожусь в активити настроек. Пытаюсь изменить фон разметки в другом активити - виджета.
пишу так:
Java
1
2
LinearLayout wl = (LinearLayout)findViewById(R.id.widget_layout);
wl.setBackgroundResource(R.drawable.bg);
возникает ошибка...
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
04.11.2012, 23:57     Можно ли изменять параметры разметки программно? #4
Цитата Сообщение от dubok79 Посмотреть сообщение
А есть ли возможность указать на ресурс, сформировать его имя из строки
можно. а зачем?

Цитата Сообщение от dubok79 Посмотреть сообщение
Что то я никак не пойму, что перед точкой должно стоять? Наверное сам layout которому надо прилепить новый background,
ну да.


Цитата Сообщение от dubok79 Посмотреть сообщение
возникает ошибка...
потому, что в активити настроек нет лаяута с id widget_layout
dubok79
323 / 121 / 11
Регистрация: 01.11.2012
Сообщений: 586
05.11.2012, 00:36  [ТС]     Можно ли изменять параметры разметки программно? #5
Цитата Сообщение от V0v1k Посмотреть сообщение
потому, что в активити настроек нет лаяута с id widget_layout
Ну мне надо бы менять задний фон у ляута виджета. Как тут быть?
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
05.11.2012, 00:44     Можно ли изменять параметры разметки программно? #6
в окне натроек записать в SharedPreferences фон, в виджете считать с SharedPreferences и применить.
dubok79
323 / 121 / 11
Регистрация: 01.11.2012
Сообщений: 586
05.11.2012, 01:20  [ТС]     Можно ли изменять параметры разметки программно? #7
Цитата Сообщение от V0v1k Посмотреть сообщение
в окне натроек записать в SharedPreferences фон, в виджете считать с SharedPreferences и применить.
А как я запишу в шаред фон? он у меня *.png
Что то я не допонимаю, извините
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
05.11.2012, 01:35     Можно ли изменять параметры разметки программно? #8
Цитата Сообщение от dubok79 Посмотреть сообщение
он у меня *.png
переменная R.drawable.bg1 типа int
dubok79
323 / 121 / 11
Регистрация: 01.11.2012
Сообщений: 586
05.11.2012, 01:37  [ТС]     Можно ли изменять параметры разметки программно? #9
Цитата Сообщение от V0v1k Посмотреть сообщение
переменная R.drawable.bg1 типа int
Это все так. Но когда я в виджете пытаюсь достучаться до layout через findViewById эклипс пишет ошибку, что AppWidgetProvider не знает такой метод
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
05.11.2012, 02:57     Можно ли изменять параметры разметки программно? #10
сам виджеты никогда не делал, но вот что мне удалось нагуглить:
remoteView.setInt(R.id.widget_layout, "setBackgroundResource", R.drawable.bg1);
dubok79
323 / 121 / 11
Регистрация: 01.11.2012
Сообщений: 586
05.11.2012, 21:35  [ТС]     Можно ли изменять параметры разметки программно? #11
Цитата Сообщение от V0v1k Посмотреть сообщение
сам виджеты никогда не делал, но вот что мне удалось нагуглить:
remoteView.setInt(R.id.widget_layout, "setBackgroundResource", R.drawable.bg1);
Все равно не получается... ошибок никаких не выдает, но фон у виджета не поменялся...жалька

Добавлено через 4 часа 32 минуты
А есть ли возможность указать на ресурс, сформировать его имя из строки
Цитата Сообщение от V0v1k Посмотреть сообщение
можно. а зачем?
Ну например для автоматического учета новых тем для виджета. Т.е. добавить в ресурс картинку, прописать ее в strings.xml, а на onUpdate виджета все это дело само бы считывалось.
Подскажите как указать на ресурс, сформировав его имя из строки? Спасибо
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
06.11.2012, 00:33     Можно ли изменять параметры разметки программно? #12
как это поможет учитывать новые темы?
Java
1
int resID = getResources().getIdentifier(mDrawableName , "drawable", getPackageName());
dubok79
323 / 121 / 11
Регистрация: 01.11.2012
Сообщений: 586
06.11.2012, 11:46  [ТС]     Можно ли изменять параметры разметки программно? #13
Цитата Сообщение от V0v1k Посмотреть сообщение
как это поможет учитывать новые темы?
Java
1
int resID = getResources().getIdentifier(mDrawableName , "drawable", getPackageName());
Я же говорю, есть в strings.xml string-array с наименованиями тем. Эти наименования соответствуют имени файла заднего фона в drawable. Таким образом что-бы в коде ничего не править, достаточно добавить новую тему в массив и положить ее в drawable. Вот.

Еще вопрос. Каким образом можно определить существует ресурс или нет. Попробовал getResources().equals("bg"), но наверное это совсем не то, там тип Object стоит, всегда фальш возвращается. Подскажите если знаете. Спасибо.

P.S. кстати почему эклипс пишет про getIdentifier "Примечание: использование этой функции не рекомендуется. Это гораздо более эффективно, чтобы получить ресурсы на идентификатор, чем по имени." машинный перевод
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.11.2012, 12:36     Можно ли изменять параметры разметки программно?
Еще ссылки по теме:

Android Можно ли программно узнать заблокирован ли экран у смартфона\планшета и разблокировать его
Что такое "кэш" в android? Как можно программно сохранить что-то в кэш? Android
Можно ли программно изменять код класса? Android
Android Можно ли сделать программно root на Android?
Обработка нажатий кнопок созданных программно в заданном месте разметки Android

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

Или воспользуйтесь поиском по форуму:
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
06.11.2012, 12:36     Можно ли изменять параметры разметки программно? #14
Цитата Сообщение от dubok79 Посмотреть сообщение
Каким образом можно определить существует ресурс или нет.
getIdentifier Returns 0 if no such resource was found. (0 is not a valid resource ID.)

Цитата Сообщение от dubok79 Посмотреть сообщение
почему эклипс пишет
наверное потому что так оно и есть.
лучше бы инглиш скопировали чем это)
Yandex
Объявления
06.11.2012, 12:36     Можно ли изменять параметры разметки программно?
Ответ Создать тему
Опции темы

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