LinearLayout в виджете приложения

Я работаю с модифицированной версией образца 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 ответ

Решение

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

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

If you're going to include an image as well, then you're probably better off with a LinearLayout than a single TextView indeed, although you could potentially use the intrinsic drawable option of the latter. That could get a little messy though, especially if you're planning on using different styles for the different lines of text... Not impossible, but I'd stick with the LinearLayout.;)

Другие вопросы по тегам