Gostaria de criar a mesma borda deste LinearLayout como no exemplo:
Neste exemplo, podemos ver que a borda não é a mesma em todo o linearLayout. Como posso criar isso usando um arquivo drawable XML?
Por enquanto, eu só consigo criar uma borda simples em todo o LinearLayout assim:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
<corners
android:radius="1dp"
android:topRightRadius="0dp"
android:bottomRightRadius="0dp"
android:bottomLeftRadius="0dp" />
<stroke
android:width="1dp"
android:color="#E3E3E1" />
<solid android:color="@color/blanc" />
</shape>
android
border
android-linearlayout
wawanopoulos
fonte
fonte
background
propriedade para que ... criar um arquivo XML com a forma como o retângulo, cor e efeito de sombra para ele e defini-lo como plano de fundo para o seu layout linear ..Respostas:
Tente isso ..
fonte
"0dp"
por"1dp"
na resposta de Hariharan.<gradient>
em sua<shape>
para aumentar o efeito de fronteira, e também se é realmente o efeito o seu UI precisa em vez de apenas beira da cor sólida.É por isso que o CardView existe. CardView | Desenvolvedores Android
É apenas um FrameLayout que suporta elevação em dispositivos pré-pirulito.
Para usar isso, você precisa adicionar dependência a
build.gradle
:fonte
Eu obtenho os melhores resultados usando um gráfico de 9 patches.
Você pode simplesmente criar um gráfico de patch 9 individual usando o seguinte editor: http://inloop.github.io/shadow4android/
Exemplo:
O gráfico de 9 patches:
O resultado:
A fonte:
fonte
Ok, eu sei que é tarde demais. mas eu tinha o mesmo requisito. eu resolvi assim
1. Crie primeiro um arquivo xml (exemplo: border_shadow.xml) na pasta "drawable" e copie o código abaixo para ele.
2. agora, no layout em que deseja a sombra (exemplo: LinearLayout), adicione isso no android: background
e isso funcionou para mim.
fonte
Isto é tão simples:
Crie um arquivo drawable com um gradiente como este:
para sombra abaixo de uma vista
below_shadow.xml
para sombra acima de uma vista
above_shadow.xml
e assim por diante para a sombra direita e esquerda, basta alterar o ângulo do gradiente :)
fonte
Como alternativa, você pode usar uma imagem de 9 patches como plano de fundo para seu layout, permitindo sombras mais "naturais":
Resultado:
Coloque a imagem na sua
/res/drawable
pasta.Verifique se a extensão do arquivo
.9.png
não está.png
A propósito, isso é uma modificação (reduzida ao tamanho mínimo quadrado) de um recurso existente encontrado na pasta de recursos da API 19 sdk.
Deixei os marcadores vermelhos, pois eles não parecem prejudiciais, como mostra a ferramenta draw9patch.
[EDITAR]
Cerca de 9 patches, caso você nunca tenha tido nada a ver com eles.
Basta adicioná-lo como plano de fundo da sua exibição.
As áreas marcadas em preto (esquerda e superior) se esticarão (vertical, horizontalmente).
As áreas marcadas em preto (à direita, embaixo) definem a "área de conteúdo" (onde é possível adicionar texto ou Visualizações - você pode chamar as regiões não marcadas de "preenchimento", se desejar).
Tutorial: http://radleymarx.com/blog/simple-guide-to-9-patch/
fonte
Você cria um arquivo .xml no drawable com o nome drop_shadow.xml:
Então:
fonte
Use esta linha única e espero que você consiga o melhor resultado;
uso:
android:elevation="3dp"
ajuste o tamanho conforme necessário e esta é a melhor e mais simples maneira de obter a sombra como botões e outras sombras padrão do Android. Deixe-me saber se funcionou!fonte
Se você já possui a borda da forma, adicione a elevação:
fonte
1. Primeiro, crie um nome de arquivo xml shadow.xml na pasta "drawable" e copie o código abaixo para ele.
Em seguida, adicione a lista de camadas como plano de fundo no seu LinearLayout.
fonte
fonte
Eu sei que é tarde, mas poderia ajudar alguém.
Você pode usar um constraintLayout e adicionar a seguinte propriedade no xml,
fonte
Eu encontrei a melhor maneira de resolver isso.
Você precisa definir um plano de fundo retangular sólido no layout.
Use este código -
ViewCompat.setElevation(view , value)
No conjunto de layouts pai
android:clipToPadding="false"
fonte
ViewCompat.setElevation()
método na classe ViewCompat:public void setElevation(View view, float elevation) {}
. Como você pode ver, não está implementado. Eu realmente duvido que ele vai ser de alguma ajuda, e realmente saber se você realmente testado a sua própria resposta, lol