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

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

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

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

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

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

Можно ли программно изменять код класса? - Программирование Android
Если классы можно подгружать, то можно ли их писать из кода. Если нельзя то в каком языке можно?

Обработка нажатий кнопок созданных программно в заданном месте разметки - Программирование Android
Здравствуйте, собственно проблема: как сделать кнопки в андроид(не простые через button@id а золотые), кнопки округлой формы, желательно с...

Как добавить дополнительные параметры к программно создаваемым кнопкам? - Программирование Android
Программа готова к эксплуатации, но появилась необходимость добавить возможность изменять размер текста. Код построен по принципу -...

Можно ли редактировать текст программно? - Программирование Android
Привет Всем!...Подскажите, можно ли редактировать текст программно?...т.е. сделать его жирным,курсивом, подчеркнутым и т.д.

Можно ли сделать программно root на Android? - Программирование Android
можно ли сделать программно root на 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 "Примечание: использование этой функции не рекомендуется. Это гораздо более эффективно, чтобы получить ресурсы на идентификатор, чем по имени." машинный перевод
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 Посмотреть сообщение
почему эклипс пишет
наверное потому что так оно и есть.
лучше бы инглиш скопировали чем это)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.11.2012, 12:36
Привет! Вот еще темы с ответами:

Программно изменять параметры в 'Edit Connection' SimpleDataSet - Delphi БД
Мучаюсь вопросом. Как изменять программно свойства компонента SimpleDataSet. А именно, hostname, username, password, login. Кто знает -...

Можно ли создать интерфейс, через который можно было бы изменять параметры блоков Simulink? - Simulink
Здраствуйте,уважаемые форумчане.) Подскажите пожалуйста,можно ли создать интерфейс, через который можно было бы изменять параметры блоков...

Можно ли параметры BIOS изменять из Windows? - BIOS
Можно ли написать такую программу, которая будет менять настройки BIOS из оболочки Windows? Просто хочу написать программу, которая...

Какие параметры жестких дисков можно изменять? - Жесткие диски
Пожалуйста напишите подробно


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
06.11.2012, 12:36
Ответ Создать тему
Опции темы

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