アプリ ウィジェットの理解を深めるために、サンプル 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 を元に戻すと、これが修正されます。問題の一部は、WeatherWidgetService.getViewAt() で RemoteViews を参照する方法にあると思われますが、DDMS や LogCat などからほとんど助けが得られません。