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.;)