私はAppWidget
のいくつかの非常によく似たレイアウトを持っていますが、実際にはTextView
要素の1つの回転だけが異なります(スクリーンの向きに基づいて適切なレイアウトを選択します)。AppWidgetの場合のレイアウトの再利用
同じものを何度も繰り返すのではなく(私は繰り返しが嫌いです)、私はRe-using Layouts with <include/>
で試してみると思います。
問題は、レイアウトの特定の要素をIDで参照しようとしているときに発生します。
:私はメソッドを使用しました 非 -AppWidgetレイアウトは「親」レイアウトでは2階層のアプローチが使用されている here、...を説明するための要素は、含まれるレイアウトXMLである場合
TextView tv = (TextView)findViewById(R.id.textview_layout).findViewById(R.id.textview);
tv.setText("test");
... "子" レイアウトでTextView
のIDがtextview
です:コードで
<include layout="@layout/my_layout" android:id="@+id/textview_layout" />
。だから、あなたが最初にTextView
を含むView
を参照してから、TextView
を参照するという2段階のアプローチです。
しかし、AppWidgetsでは、TextView
を直接処理するのではなく、RemoteViews
ですべてを実行する必要があります。
ので、代わりの:
TextView textView = (TextView)findViewById(viewId);
textView.setText("text");
あなたがする必要があります:RemoteViews
へのインタフェースは、単一の(直接)、ビューIDを渡すことによるものであることを考えると
remoteViews.setTextViewText(viewId, "text");
appWidgetManager.updateAppWidget(appWidgetId, remoteViews);
、どのようにインクルードされたファイルの要素を参照しますか?
ありがとうございます。私は、画面の向きに基づいて、適切なレイアウトをOSが自動的に選択できるようにすることを前提としていますか?残念ながら、私の場合、それはあまり簡単ではない。私はウィジェットのサイズに基づいて異なるレイアウトを切り替える必要があります(ウィジェットの高さが狭く、レイアウトが狭くなった場合はユーザーオプションとして回転させます)。 – drmrbrewer
それはあなたがそれをプログラム的に設定できる場合は簡単です、チュートリアルをチェックしてください。私は思っているあなたの突き刺しのために良い断片を使うこともできます。ありがとうございました – Jois