マイナスマージンのデモ:
シナリオ
ビューの 1 つに負のマージンを設定してビューをオーバーラップさせ、別のビューのバウンディング ボックスに侵入させます。
考え
必要に応じて、レイアウトのオーバーラップで期待どおりに機能するようです。しかし、無意識のうちに正しいことをしていないために、より大きな問題に遭遇したくありません。エミュレーター、物理デバイス、名前を付けます。負のマージンを使用すると、すべてが正しく機能しているように見えます。あるビューが別のビューの境界ボックスに侵入し、レイアウトでの宣言方法に応じて、他のビューの上または下になります。
API 21以降、ビューを他のビューの上または下に表示するように属性をtranslationZ
設定できることも認識していますが、私の懸念は基本的に、属性のドキュメントでマージン値が正でなければならないことが明確に指定されているという事実から来ています。私の引用:elevation
layout_margin
抜粋:
このビューの左、上、右、および下に余分なスペースを指定します。このスペースは、このビューの境界の外にあります。マージン値は正でなければなりません。「14.5sp」などの単位が追加された浮動小数点数であるディメンション値である必要があります。使用可能な単位は次のとおりです: px (ピクセル)、dp (密度に依存しないピクセル)、sp (優先フォント サイズに基づいてスケーリングされたピクセル)、in (インチ)、mm (ミリメートル)...
最初にこの質問をしてから何年もの間、負のマージンで問題が発生したことはありません。負のマージンをできるだけ使用しないようにしましたが、問題は発生しませんでした。それが心配です。