App Widget中的LinearLayout

时间:2011-12-23 22:53:15

标签: android android-appwidget remoteview

我正在使用示例WeatherListWidget的修改版本来更好地理解App Widgets。一切都很好 - 除非我尝试用稍微复杂的布局文件替换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修复此问题。我怀疑问题的一部分是我如何在WeatherWidgetService.getViewAt()中引用RemoteViews - 但是我从DDMS或LogCat或其他任何东西得到的帮助很少。

1 个答案:

答案 0 :(得分:1)

谢谢你们,我收到了通知。 (因此需要一个length > 2的用户名,因此点数

根据评论回答: 我没有看到LinearLayout中两个TextView的任何layout_widthlayout_height属性 - 它们是必需的。此外,如果您希望两个TextView位于彼此之上,请将android:orientation="vertical"添加到LinearLayout。而对于记录,您可以通过在不同元素之间添加“\ n”来将CharSequence分解为单个TextView中的多行。

如果你要包含一个图像,那么你可能最好使用LinearLayout而不是单个TextView,尽管你可能会使用后者的固有drawable选项。这可能会有点混乱,特别是如果你打算为不同的文本行使用不同的样式......不是不可能,但我会坚持使用LinearLayout。 ;)