新手,在看inflater的时候有点疑问在LayoutInflater.inflater(int resId,ViewGroup root,boolean attchtoroot)这个方法中,其中第三个参数是什么意思,什么时候用true,什么时候用false?
人生最曼妙的风景,竟是内心的淡定与从容!
簡単に言うと、各 View がそのレイアウト位置を決定するために LayoutParams を必要とする場合、Layout リソース ファイル内で作成したレイアウト プレフィックス設定は基本的に LayoutParams に記録されます。ただし、LayoutParams は現在の View に基づいて生成されるのではなく、親 View に基づいて定義されます。たとえば、TextView が LinearLayout 内に存在する場合、TextView は LinearLayout.LayoutParams に基づく LayoutParams を持ちます。これは、この方法で TextView が LinearLayout に固有のレイアウト属性をいくつか持つことになるためです。 まさにそのとおりです。LayoutInflater.inflater を使用してリソース ファイルからビューをロードする場合、この時点で、トップレベルのビューには親ビューが存在しない可能性があります。最も基本的な LayoutParams が使用され、失われます。パラメーターが失われないようにするために、親 View への参照である root を提供できます。これは、使用する LayoutParams がルート クラスによって提供される LayoutParams と一貫していることを示します。通常の状況では、一貫性を確保しやすくするために、ロードされた View が結合する親 View オブジェクトを指定します。 3 番目の項目 attchToRoot は、実際にはショートカット操作です。つまり、root を参照として使用すると、ビューも root に追加されて、root のサブビューになります。 Android のデフォルトのオーバーロードでは、root を指定し、それが空でない場合、attchToRoot の値は true になります。これは、ビューがデフォルトで root に追加されることを意味します。 root と true は Android で使用されるデフォルトのメソッドですが、通常はこの方法では使用しません。LayoutInflater.inflater には非常に特殊な戻りメソッドがあるためです。つまり、渡した attchToRoot が true の場合、 LayoutInflater。インフレーターは、ロードされたビュー自体の代わりに root を返します。通常の状況では、ビューをロードするときに、ビュー上で何らかの割り当て操作を実行したいと考えます。つまり、ビュー自体を直接取得することを好みます。したがって、通常は root と false の組み合わせになります。 View に値を割り当てた後、それを root に追加します。
root
attchToRoot
@ 有明さんの答えはこれ以上に素晴らしいものはありません。 投稿者がさらにコンテンツを参照する必要がある場合は、公式ドキュメントをお読みください
簡単に言うと、各 View がそのレイアウト位置を決定するために LayoutParams を必要とする場合、Layout リソース ファイル内で作成したレイアウト プレフィックス設定は基本的に LayoutParams に記録されます。ただし、LayoutParams は現在の View に基づいて生成されるのではなく、親 View に基づいて定義されます。たとえば、TextView が LinearLayout 内に存在する場合、TextView は LinearLayout.LayoutParams に基づく LayoutParams を持ちます。これは、この方法で TextView が LinearLayout に固有のレイアウト属性をいくつか持つことになるためです。
まさにそのとおりです。LayoutInflater.inflater を使用してリソース ファイルからビューをロードする場合、この時点で、トップレベルのビューには親ビューが存在しない可能性があります。最も基本的な LayoutParams が使用され、失われます。パラメーターが失われないようにするために、親 View への参照である
root
を提供できます。これは、使用する LayoutParams がルート クラスによって提供される LayoutParams と一貫していることを示します。通常の状況では、一貫性を確保しやすくするために、ロードされた View が結合する親 View オブジェクトを指定します。3 番目の項目
attchToRoot
は、実際にはショートカット操作です。つまり、root
を参照として使用すると、ビューもroot
に追加されて、root
のサブビューになります。 Android のデフォルトのオーバーロードでは、root
を指定し、それが空でない場合、attchToRoot
の値は true になります。これは、ビューがデフォルトでroot
に追加されることを意味します。root
と true は Android で使用されるデフォルトのメソッドですが、通常はこの方法では使用しません。LayoutInflater.inflater には非常に特殊な戻りメソッドがあるためです。つまり、渡したattchToRoot
が true の場合、 LayoutInflater。インフレーターは、ロードされたビュー自体の代わりにroot
を返します。通常の状況では、ビューをロードするときに、ビュー上で何らかの割り当て操作を実行したいと考えます。つまり、ビュー自体を直接取得することを好みます。したがって、通常はroot
と false の組み合わせになります。 View に値を割り当てた後、それをroot
に追加します。@ 有明さんの答えはこれ以上に素晴らしいものはありません。
投稿者がさらにコンテンツを参照する必要がある場合は、公式ドキュメントをお読みください