私は、少なくとも定型的なコードでレイアウトを再利用したり、 "エイリアス"する方法を理解したいと思います。レイアウトエイリアスに関するAndroidのドキュメントが正しくありませんか?
Android documentation about layout aliasesは間違っており、確かに矛盾しているようです。私はこれをコンパイルしようとすると、私はAttribute is missing the Android namespace prefix
エラーを取得する
<resources>
<item name="main" type="layout">@layout/main_twopanes</item>
</resources>
:ドキュメントのこのセクションでは、例として、次のレイアウトファイルを示しています。使用し、既存のレイアウトにエイリアスを作成するには
:でも
resources
要素に名前空間を追加した後、私はerror: Error: String types not allowed (at 'type' with value 'layout').
Elsewhere in the Android documentationを取得、彼らは別名のレイアウトに異なると一見反転して間違った道を示します要素 は
<merge>
にラップされています。たとえば、次のようにこれを実行する<?xml version="1.0" encoding="utf-8"?> <merge> <include layout="@layout/main_ltr"/> </merge>
はLogCat E/AndroidRuntime(1558): android.view.InflateException: <merge /> can be used only with a valid ViewGroup root and attachToRoot=true
で、次のエラーになります。したがって、このエラーは、不要な親を必要とするので、<include>
<merge>
のペアは間違いでなければならないという事実を補強しているようです。View
。
最後に、があります。これは、元の方向と矛盾するように見えます。逆さまの形式のトップレベル<merge><include/></merge>
について言及していません。
このような冗長な表示グループが含まれないようにするには、代わりに 要素を再利用可能なレイアウトのルートビューとして使用できます。 例えば:
<merge xmlns:android="http://schemas.android.com/apk/res/android"> <Button android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/add"/> <Button android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/delete"/> </merge>
[最初のメソッド](http://developer.android.com/training/multiscreen/screensizes.html#TaskUseAliasFilters)はコンパイルされていて、うまく動作しているようです。最新のSDKツールをインストールしていますか? – Joe
@Joeはこれを確認してくれてありがとう!それは私が注意深く指示を読まなかったことに終わります。 layout.xmlを 'values-large'フォルダではなく' layout-large'の中に置いていました。 –