Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.72/18: Рейтинг темы: голосов - 18, средняя оценка - 4.72
325 / 123 / 10
Регистрация: 01.11.2012
Сообщений: 586
1

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

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


Может не корректно озаглавил тему, но нужно вот что: у виджета есть разметка в которой написано android:background=@drawable/bg
можно ли как то в программном коде изменить bg на, например, bg1? Или есть какой другой способ. Т.е. задача стоит в том, что бы задний фон у виджета был разным в зависимости от настроек.
Спасибо за идеи и подсказки!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.11.2012, 19:26
Ответы с готовыми решениями:

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

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

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

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

13
1162 / 986 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
04.11.2012, 19:33 2
.setBackgroundResource(R.drawable.bg1);
1
325 / 123 / 10
Регистрация: 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);
возникает ошибка...
0
1162 / 986 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
04.11.2012, 23:57 4
Цитата Сообщение от dubok79 Посмотреть сообщение
А есть ли возможность указать на ресурс, сформировать его имя из строки
можно. а зачем?

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


Цитата Сообщение от dubok79 Посмотреть сообщение
возникает ошибка...
потому, что в активити настроек нет лаяута с id widget_layout
0
325 / 123 / 10
Регистрация: 01.11.2012
Сообщений: 586
05.11.2012, 00:36  [ТС] 5
Цитата Сообщение от V0v1k Посмотреть сообщение
потому, что в активити настроек нет лаяута с id widget_layout
Ну мне надо бы менять задний фон у ляута виджета. Как тут быть?
0
1162 / 986 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
05.11.2012, 00:44 6
в окне натроек записать в SharedPreferences фон, в виджете считать с SharedPreferences и применить.
0
325 / 123 / 10
Регистрация: 01.11.2012
Сообщений: 586
05.11.2012, 01:20  [ТС] 7
Цитата Сообщение от V0v1k Посмотреть сообщение
в окне натроек записать в SharedPreferences фон, в виджете считать с SharedPreferences и применить.
А как я запишу в шаред фон? он у меня *.png
Что то я не допонимаю, извините
0
1162 / 986 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
05.11.2012, 01:35 8
Цитата Сообщение от dubok79 Посмотреть сообщение
он у меня *.png
переменная R.drawable.bg1 типа int
0
325 / 123 / 10
Регистрация: 01.11.2012
Сообщений: 586
05.11.2012, 01:37  [ТС] 9
Цитата Сообщение от V0v1k Посмотреть сообщение
переменная R.drawable.bg1 типа int
Это все так. Но когда я в виджете пытаюсь достучаться до layout через findViewById эклипс пишет ошибку, что AppWidgetProvider не знает такой метод
0
1162 / 986 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
05.11.2012, 02:57 10
сам виджеты никогда не делал, но вот что мне удалось нагуглить:
remoteView.setInt(R.id.widget_layout, "setBackgroundResource", R.drawable.bg1);
0
325 / 123 / 10
Регистрация: 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 виджета все это дело само бы считывалось.
Подскажите как указать на ресурс, сформировав его имя из строки? Спасибо
0
1162 / 986 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
06.11.2012, 00:33 12
как это поможет учитывать новые темы?
Java
1
int resID = getResources().getIdentifier(mDrawableName , "drawable", getPackageName());
1
325 / 123 / 10
Регистрация: 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 "Примечание: использование этой функции не рекомендуется. Это гораздо более эффективно, чтобы получить ресурсы на идентификатор, чем по имени." машинный перевод
0
1162 / 986 / 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 Посмотреть сообщение
почему эклипс пишет
наверное потому что так оно и есть.
лучше бы инглиш скопировали чем это)
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.11.2012, 12:36

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

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

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

Как можно программно изменять размеры страницы?
Такой вопрос: как можно программно изменять размеры страницы: допустим при одном значении-1024/768...

Можно ли в коде формы на которой есть ReportViewer программно задать параметры страницы
Добрый день, У меня есть такой вопрос можно ли в коде формы на которой есть ReportViewer1...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Опции темы

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