LinearLayout в виджете приложения - PullRequest
1 голос
/ 24 декабря 2011

Я работаю с модифицированной версией образца WeatherListWidget, чтобы лучше понять Виджеты приложений. Все в порядке - за исключением случаев, когда я пытаюсь заменить файлы макетов dark_widget_item и light_widget_item немного более сложными файлами макетов. Вот оригинальное оформление:

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/widget_item"
android:layout_width="match_parent"
android:layout_height="46dp"
android:paddingLeft="25dp"
android:gravity="center_vertical"
android:background="@drawable/item_bg_light"
android:textColor="#e5e5e1"
android:textSize="24sp" />

Я хотел бы иметь возможность иметь несколько строк текста. Но:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/widget_item"
android:background="@drawable/item_bg"
android:layout_width="match_parent"
android:layout_height="46dp"
android:paddingLeft="25dp">
<TextView android:id="@+id/type_string"
    android:textColor="#666666"
    android:textSize="20sp" />
<TextView android:id="@+id/title_string"
    android:textColor="#666666"
    android:textSize="18sp" />
</LinearLayout>

выходит из строя.

Фактически это приводит к «Извините! Запуск приложения (процесс com.android.launcher) неожиданно остановился. Пожалуйста, повторите попытку. Принудительное закрытие».

Восстановление TextView widget_item.xml исправляет это. Я подозреваю, что часть проблемы заключается в том, как я ссылаюсь на RemoteViews в WeatherWidgetService.getViewAt () - но мне очень мало помогают DDMS, LogCat или что-то еще.

1 Ответ

1 голос
/ 24 декабря 2011

Спасибо, ребята, я получил уведомление. (SO требует имя пользователя с length > 2, отсюда и точка)

Ответ на комментарий: Я не вижу атрибутов layout_width и layout_height для обоих TextViews в вашем LinearLayout - они обязательны. Также, если вы хотите, чтобы два TextView были выше друг друга, добавьте android:orientation="vertical" к LinearLayout. И просто к записи, вы можете разбить CharSequence на несколько строк в одном TextView, добавив «\ n» между различными элементами.

Если вы также собираетесь включить изображение, тогда вам, вероятно, лучше использовать LinearLayout, чем один TextView, хотя вы могли бы потенциально использовать встроенный вариант рисования последнего. Хотя это может немного запутаться, особенно если вы планируете использовать разные стили для разных строк текста ... Не исключено, но я бы придерживался LinearLayout. ;)

...