1

アプリ ウィジェットの理解を深めるために、サンプル 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 などからほとんど助けが得られません。

4

1 に答える 1

1

みんなありがとう、私は通知を受け取りました。(SOにはユーザー名が必要length > 2です。したがって、ドット)

コメントごとに回答: LinearLayout の TextViews の両方に属性が表示されません。これらは必須layout_widthです。layout_heightまた、2 つの TextView を互いの上に配置する場合android:orientation="vertical"は、LinearLayout に追加します。記録として、さまざまな要素の間に「\n」を追加することで、単一の TextView で CharSequence を複数の行に分割できます。

画像も含める場合は、単一の TextView よりも LinearLayout を使用した方がよいでしょうが、後者の組み込みの drawable オプションを使用できる可能性があります。ただし、特にテキスト行ごとに異なるスタイルを使用することを計画している場合は、少し面倒になる可能性があります...不可能ではありませんが、LinearLayout を使用します。;)

于 2011-12-23T23:48:24.720 に答える