Como posso ter um efeito cascata em um layout linear / relativo simples ao tocar no layout?
Tentei definir o plano de fundo de um layout para algo como:
<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="?android:colorControlHighlight" >
<item android:drawable="@android:color/white"/>
</ripple>
No entanto, estou vendo apenas um fundo branco simples e nenhum efeito cascata ao tocar no layout. O que estou fazendo de errado?
Editar:
Para referência, aqui está o meu arquivo xml de layout:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="250dp"
android:layout_height="250dp"
android:background="@drawable/test"
android:clickable="true">
</RelativeLayout>
<item android:drawable="@android:color/white"/>
seção. Portanto, não tenho certeza de como isso deveria funcionar se eu quisesse uma cor de fundo no layout. Colocar isso em cima de outro layout com uma cor de fundo também não funciona!Respostas:
Defina essas propriedades em seu layout (se seu layout tiver o fundo branco / claro padrão):
Você não precisa de um drawable personalizado neste caso.
No entanto, se o seu layout tiver um fundo preto / escuro, você terá que criar seu próprio drawable ondulado como este:
Em seguida, defina este drawable ondulação como sua propriedade android: background .
Você pode ver muitos exemplos desses tipos de ondulações no AOSP: aqui
fonte
background
?Estou adicionando isso além da resposta de Igor Ganapolsky caso alguém queira ter um layout com cor diferente e também ter um efeito cascata. Você simplesmente cria um efeito cascata em drawables como este:
em seguida, coloque -o como plano de fundo do layout ou qualquer botão, conforme Igor Ganapolsky mencionou em sua resposta.
fonte
Você deve alterar o seguinte snippet de código em qualquer widget (
TextView
/Button
) e pode implementar o efeito ondulação :E você está pronto para ir.
fonte
Acontece que isso está funcionando conforme o esperado. O valor padrão de colorControlHighlight do tema Material é
#40ffffff
. Portanto, em um fundo branco, isso não aparecerá. Alterar a cor de destaque para outra funciona e / ou alterar a cor de fundo do objeto.Obrigado a todos (especialmente Alanv por me apontar na direção certa).
fonte
colorControlHighlight
no seustyles.xml
. Adicione-o ao seu tema personalizado, por exemplo.Defina o
android:clickable="true"
seu layout.fonte
Este é um exemplo para clicar em um layout de amostra com efeito cascata:
fonte
Use este ripple.xml na pasta Drawable e atribua-o como View's
android: background = "@ drawable / ripple"
android: clickable = "true"
fonte
Basta adicionar o efeito cascata padrão com
android:background="?selectableItemBackground"
Gostar:
fonte
Coloque isso em seu layout:
Observação: há um bug na documentação da API. Funcionará apenas na API> = 23
Para todos os níveis de API , use esta solução
fonte
Eu tentei todas essas respostas e nada funcionou para mim, então, resolvi criar o seguinte estilo:
E então, apliquei ao meu layout linear:
fonte