我正在使用示例WeatherListWidget的修改版,以更好地了解App Widget。一切都很好-除非我尝试用稍微更复杂的布局文件替换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或其他工具获得的帮助很少。

最佳答案

谢谢大家,我收到了通知。 (因此,需要使用length > 2的用户名,因此是点号)

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

如果还要包含图像,则使用LinearLayout可能比单个TextView更好,尽管您可能会使用后者的内在可绘制选项。但是,这可能会有些混乱,尤其是如果您打算针对不同的文本行使用不同的样式...不是没有,但是我会坚持使用LinearLayout。 ;)

关于android - 应用程序小部件中的LinearLayout,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8621334/

10-11 22:48
查看更多