LinearLayout から派生したカスタム レイアウト マネージャーを作成しました。(私は LinearLayout 機能を実際にはあまり使用しませんが、多くの ViewGroup 抽象メソッドのすべてを気にしたくはありません。) 私は上書きしただけです。
protected void onLayout(boolean changed, int l, int t, int r, int b)
メソッドと、その子ごとに MyLayout.onLayout(...) で child.layout(...) を呼び出します。他のすべてのものはオリジナルの LinearLayout です。子が子 (MyLayout の孫) のない単純なコントロールである場合、正常に動作し、子は親の MyLayout に正しく配置されます。
ViewGroup (LinearLayout、ViewSwitcher など) を MyLayout の子として使用すると、問題が発生します。この場合、(MyLayout の) 子は適切に配置されますが、各子の内部の (MyLayout の) 孫はそうではありません。wrap_content、fill_parent、layoutWeight などのパラメーターと値が正しく処理されていないようです。たとえば、MyLayout の ViewSwitcher はそのコンテンツを表示せず、LinearLayouts (MyLayout の子) の子 (MyLayout の孫) のサイズは 0px で、CompoundButton (MyLayout の子) はそのテキストを表示しないことがあります...
MyLayout.onLayout の child.layout(...) は各子のサイズと位置を正しく設定しているようですが、各子のレイアウトをうまく機能させるには他のメソッドを呼び出す必要があります (子が子を持つ ViewGroup の場合)。そのようなものはありますか、または onLayout を変更したばかりの MyLayout はうまく機能するはずですか?
すべてのアドバイスをありがとう。