1

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で突然動作しました。非常に奇妙な!しかし、この回避策が他の数人の人々に役立つことを願っています。

4

1 に答える 1

4

いくつかのデバイスとエミュレーターをテストしましたが(完全ではありませんが)、選択したリソースフォルダーは、バージョンが高い<=デバイスバージョンのものであるようです。

于 2010-01-21T15:37:16.903 に答える