0

これが私の属性です:

<attr name="taskTimePickerLayout" format="reference" />

そして、これがthemes.xmlでどのように設定されているかです。

<item name="taskTimePickerLayout" type="reference">@layout/task_time_picker_holo</item>

attrのレイアウトを使用してレイアウトを膨らませたいのですが、どうすればよいですか?インフレータのリソースとして使用しようとしましR.attr.taskTimePickerLayoutたが、ResourceNotFoundExceptionがスローされます。

4

1 に答える 1

1

このコードをアクティビティ (またはフラグメント) に挿入します。

TypedValue typedValue = new TypedValue();
getTheme().resolveAttribute(R.attr.taskTimePickerLayout, typedValue, true);
setContentView(typedValue.resourceId);

このコードを実行する前に、必ずアクティビティにテーマを適用してください。

このコードが基本的に行うことは、現在のコンテキストに適用されたテーマに基づいて参照 R.attr.taskTimePickerLayout を解決することです。typedValue.resourceId は、解決された参照の値です (この場合は @layout/task_time_picker_holo のレイアウト ID)。これは、他のすべての参照 (drawable、色など) でも機能します。

于 2013-02-22T02:28:46.607 に答える