同じ幅の 2 つの線形レイアウトがあります。1 つは 2 つの子、もう 1 つは 3 です。最後の 2 つの子を同じ幅にしようとしていますが、Android がこのように動作する理由がわかりません。最終的に、次の重みで希望どおりに見えるようになりました。
なぜこれがこのように機能するのか、誰かが私に説明できますか?
その理由を簡単に計算してみました。重みの合計から子の重みを引いたものを、重みの合計で割って、親の幅を掛けたものだと思います。そう:
sum = 1 + 6
((sum - 6) / sum) * W = 14.3% * W
2行目に同じアルゴリズムを試しましたが、完全にオフでした:
sum = 1 + 1 + 1.5
((sum - 1.5) / sum) * W = 57.1% * W
アップデート
上記は、子の幅が match_parent に設定されている場合にのみ当てはまります。幅を 0 または 0dp に設定すると、実際には期待どおりに動作します。重みが大きいほど、子に割り当てられるスペースが増えます。アルゴリズムはもう少し意味があり、両方の行で期待どおりに機能します。
sum = 1 + 6
(1 / sum) * W = 14.3% * W
子の幅が設計により match_parent に設定されているウェイトの以前の動作ですか? もしそうなら、子供の幅を計算するためのおおよそのアルゴリズムは何ですか?