AndroidでLayoutInflater.inflateメソッドのパラメータ説明

1093 ワード

一般的な(他のinflateメソッドの最終呼び出し)メソッドは
public View inflate(@LayoutRes int resource, @Nullable ViewGroup root, boolean attachToRoot)

rootはLayoutParamsを生成するために使用され、タイプはrootに対応しています.rootがLinearLayoutの場合、サブレイアウトで生成されるLayoutParamパラメータはLinearLayoutです.LayoutParamタイプの場合、サブレイアウトはLinearlayoutの親コンテナにしか追加できません.他のタイプのコンテナに追加すると、親コンテナのタイプがサブレイアウトLayoutParamを生成するViewGroup(メソッドのroot)タイプと一致しなければならないというエラーが発生します.
attachToRootは、現在のレイアウトがrootに直接追加されるかどうかを決定するために使用されます.
プロセスの説明
もしroot!=nullでは、まずサブレイアウトのLayoutParam、すなわちサブレイアウトで設定されたパラメータが生成されます.この場合、attachToRoot==trueの場合、サブレイアウトは現在のコンテナに直接追加され、addView()メソッドは呼び出されません.attachToRoot==falseの場合、現在の親コンテナにサブレイアウトを追加するにはaddView()メソッドを後で呼び出します.
root==nullの場合、attachToRoot==falseまたはtrueにかかわらずaddView(view)メソッドを呼び出すと、サブレイアウトが表示され、最小サイズ、すなわちwrap_content.サブレイアウトのサイズを変更する場合は、LayoutParamパラメータのあるaddViewメソッドを呼び出すことができます.
まとめ:
1.root==nullの場合、addViewメソッドのサブレイアウトを呼び出す必要があります.2.root!=null時にattachToRoot==trueの場合、addViewメソッドは使用されず、呼び出されません.attachToRoot==falseの場合、addViewメソッドを呼び出し、LayoutParamパラメータを渡さずにサブレイアウトがxmlで設定したサイズで表示されます.