Demonstração de margem negativa:
O cenário
Sobrepor as visualizações definindo uma margem negativa para uma delas de modo que invada a caixa delimitadora de outra visualização.
Pensamentos
Parece que funciona da maneira que você esperaria, com a sobreposição dos layouts, se necessário. Mas não quero ter um problema maior por não saber fazer as coisas direito. Emuladores, dispositivos físicos, o que você quiser, quando você usa margens negativas tudo parece funcionar corretamente, uma visão invade a caixa delimitadora de outras visões e dependendo de como está declarado no layout ficará acima ou abaixo da outra visão.
Também estou ciente de que, desde a API 21, podemos definir os atributos translationZ
e elevation
para fazer a exibição aparecer acima ou abaixo de outras exibições, mas minha preocupação vem basicamente do fato de que na documentação dos layout_margin
atributos está claramente especificado que os valores de margem devem ser positivos , vamos citação de mim:
Trecho:
especifica espaço extra nos lados esquerdo, superior, direito e inferior desta vista. Este espaço está fora dos limites desta vista. Os valores da margem devem ser positivos . Deve ser um valor de dimensão, que é um número de ponto flutuante anexado a uma unidade como "14,5 sp". As unidades disponíveis são: px (pixels), dp (pixels independentes da densidade), sp (pixels redimensionados com base no tamanho de fonte preferido), em (polegadas), mm (milímetros) ...
Nos anos desde que fiz essa pergunta originalmente, não tive problemas com margens negativas, tentei evitar usá-las o máximo possível, mas não encontrei nenhum problema, portanto, embora a documentação afirme que, eu também não preocupado com isso.