0

2.2より前のmatch_parentの使用に関する他の質問には、安全な下位互換性のためにfill_parentを使用する必要があるという回答があります。

私が気付いたのは、targetsdkが8以上に設定され、minsdkが7以下に設定されている場合、match_parentまたはfill_parentの使用は関係ありません。これはb/cだと思いますが、xmlはバイナリブロブにコンパイルされるため、アプリがapkにパッケージ化されると、どちらを使用するかは関係ありません。

私が興味を持っているのはLayoutParams.MATCH_PARENT、Javaコードの2.1デバイスで使用するためのランタイムエラーがない理由です。コードでLayoutParams.MATCH_PARENTにアクセスしようとすると、NoSuchClassMemberに何らかのRuntimeExceptionが発生することが予想されます。

おそらくこれは、クラスファイルがJavaでコンパイルされる方法を扱っていると思います。どんな洞察もありがたいです。

4

2 に答える 2

1

どちらを使用してもかまいません。両方とも同じ値です。コードでは、非推奨であることを警告しますが、どちらもまったく同じものです。

なぜグーグルがそのような奇妙な変更をしたのかわからない。以前の名前が好きだったのは、それが親の残りのスペースを埋めて、それと一致しないことを意味するからですが、それは私の意見です。

于 2012-06-15T22:27:17.633 に答える
0

私の知る限り、これら2つはまったく同じです。ドキュメントでは、同じ値(-1)に変換されますが、変更は実際には適切な命名であると思います。

この他の質問を確認することもできます:match_parentとfill_parentの違いは何ですか?

2.2より前のデバイスでmatch_parentを使用するアプリケーションを実行することは問題なく機能しますが、SDKはエラーをトリガーすることに注意してください...

コメントの後...何で実行するかは問題ではありませんが、コンパイルに使用するSDKのみが問題になります...1.6または2.1SDKでビルドしようとすると、次のエラーが発生します。

Description Resource    Path    Location    Type
error: Error: String types not allowed (at 'layout_width' with value 'match_parent').   main.xml    /MyProject/res/layout   line 7  Android AAPT Problem

Eclipseでは、プロジェクトのプロパティに移動し、[Android]ページに移動して、[プロジェクトビルドターゲット]を変更することで、使用しているSDKを変更できます。2.2より前に存在しなかった「match_parent」を使用しようとすると、エラーが出力されます。

ここに画像の説明を入力してください

于 2012-06-15T21:28:29.527 に答える