res/layout
一般的なフォルダーに加えて、res/layout-v3
Android 1.5との下位互換性のためのフォルダーがありますが、これにはいくつかのRelativeLayout
レイアウトに問題があります。
これまでにテストされたすべての電話とエミュレータバージョンで完全に動作します。2.1(エミュレーターとNexus One)を除く。res/layout-v3
彼らは、デフォルトの代わりにAndroid 1.5レイアウト()を表示することを選択しますres/
layout
。
他の誰かがそれを確認できますか?これはAndroidOSのバグですか?もしそうなら、バグレポートを提出するのに最適な場所はどこですか?
アップデート:
https://developer.android.com/guide/practices/screens_support.html#qualifiersをもう一度読んだ後(ヒントをマークしてくれてありがとう)、特にこの部分
特定のAPIレベル以上でのみ使用するためのリソース。たとえば、アプリケーションがAndroid 1.5(APIレベル3)とAndroid 1.6(APIレベル4以降)の両方で実行されるように設計されている場合、-v4修飾子を使用して、アプリケーションの実行時に除外する必要のあるリソースにタグを付けることができます。 Android 1.5(APIレベル3)。
レイアウトの順序を
- res / layout-v3(Android 1.5の場合のみ->これは私が行った間違った仮定でした)
- res / layout(その他の場合)
私の新しい構成に:
- res / layout-v4(Android 1.6以降の場合)
- res / layout(その他の場合->この場合、これはAndroid 1.5のみになります)
上記のドキュメントを正しく理解していて、今回の括弧内の仮定が正しければ、今は機能するはずです。ただし、結果は次のようになります。
- Android1.5はres/layoutを使用しています->OK
- Android1.6はres/layoutを使用しています-v4->OK
- Android2.0はres/layoutを使用しています-> OKではありません
- Android2.1はres/layout-v4->OKを使用しています
では、Android 2.0(エミュレーターとMotorolaマイルストーンの両方)が適切なレイアウトリソースフォルダーを選択しないのはなぜですか?
その後、2.0.1で再度テストしましたが、そこで機能しているようです。つまり、これは2.0.1で修正された2.0のバグのようです。
しかし、今最も奇妙なことは、2.0で実行できるようにするために、res/layout-v4フォルダーをres/layout-v5にコピーして、このレイアウトリソースを使用してAndroid2.0を強制することです。動作しませんでした。しかし、それをres / layout-v6(Android 2.0.1であるはずです)にコピーしてみたところ、2.0で突然動作しました。非常に奇妙な!しかし、この回避策が他の数人の人々に役立つことを願っています。