2013-11-15 5 views
0

Romain Guy создал большую реализацию презентации и образец для FlowLayout в Android деятельности (которые он связывает в ответ на этот вопрос: How can I do something like a FlowLayout in Android?)FlowLayout для Android Виджеты

Я хотел бы использовать что-то подобное в App Widget, но они, похоже, чрезвычайно привязаны к классам макетов, упомянутым в документации: http://developer.android.com/guide/topics/appwidgets/index.html#CreatingLayout.

Я попытался расширить LinearLayout, но кажется, что потомки указанных макетов не разрешены. Возможно, я могу программно перестроить свои TextViews с помощью RelativeLayout?

Есть ли более разумный способ достичь этого?

Почему макеты виджетов настолько ограничены? Я пропустил что-то важное?

ответ

2

Я попытался расширить LinearLayout, но кажется, что потомки указанных макетов не разрешены.

Исправить.

Возможно, я могу программно изменить мои текстовые элементы с помощью RelativeLayout?

Я не вижу, как, поскольку вы не являетесь тем, кто делает ваш интерфейс.

Есть ли более разумный способ достичь этого?

Непонятно, что такое «это». Если «this» является «FlowLayout типами пользовательского интерфейса для виджета приложения», либо создайте собственный домашний экран (чтобы вы могли иметь пользовательский интерфейс, который вам нужен, без необходимости виджета приложения), либо измените интерфейс. Виджеты приложений имеют ограниченную палитру доступных виджетов и контейнеров, как вы заметили.

Стратегически вы можете внести FlowLayout в AOSP и домой, чтобы он стал доступен в какой-либо будущей версии Android, и также надеемся, что он будет включен для использования виджетами приложений.

Почему макеты виджетов настолько ограничены? Я пропустил что-то важное?

Виджеты приложения отображаются на главном экране. Есть тысяч вариантов домашнего экрана. Они работают в своих процессах со своим собственным кодом, написанным их собственными разработчиками.

Таким образом, вы фактически не создаете виджеты в своем приложении, которые отображаются на главном экране. Вместо этого вы создаете структуру данных, описывающую виджеты, которые хотите, чтобы домашний экран создавал от вашего имени. Таким образом, RemoteViews не поддерживает подклассы, определенные приложениями, просто потому, что классы вашего приложения не находятся в процессе домашнего экрана.

+0

Как обычно, отличный ответ, спасибо большое! На самом деле это лучшее описание RemoteViews, с которым я столкнулся. – 2Dee

+0

Спасибо. Домашний экран на самом деле не работает для меня, так как я хочу, чтобы виджет работал на любом домашнем экране, который пользователь мог использовать. Я могу добавить объекты TextView из xml в качестве RemoteViews в мой макет виджетов. Это может быть RelativeLayout.Я не понял, как указать параметр android: layout_toRightOf и layout_below при добавлении такого представления. Возможно, у меня будет только статическая сетка TextViews в моем xml и решить, какие из них включить мой текст во время выполнения. – richardeigenmann

+0

@richardeigenmann: «Я не понял, как указать параметр android: layout_toRightOf и layout_below при добавлении такого представления» - проблема в том, что правильный ответ для потока будет зависеть от размера текста и ширина. У вас есть достойный контроль над размером текста, но у вас меньше контроля или даже обязательно знание ширины. – CommonsWare

Смежные вопросы