Estou tendo problemas para aplicar um plano de fundo gradiente a um LinearLayout.
Isso deve ser relativamente simples do que eu li, mas simplesmente não parece funcionar. Para fins de referência, estou desenvolvendo o 2.1-update1.
header_bg.xml:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient
android:angle="90"
android:startColor="#FFFF0000"
android:endColor="#FF00FF00"
android:type="linear"/>
</shape>
main_header.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="50dip"
android:orientation="horizontal"
android:background="@drawable/header_bg">
</LinearLayout>
Se eu alterar @ drawable / header_bg para uma cor - por exemplo, # FF0000, ele funcionará perfeitamente. Estou perdendo algo óbvio aqui?
Respostas:
Ok, eu consegui resolver isso usando um seletor. Veja o código abaixo:
main_header.xml:
main_header_selector.xml:
Espero que isso ajude alguém que tenha o mesmo problema.
fonte
Também é possível ter a terceira cor (centro). E diferentes tipos de formas.
Por exemplo, em drawable / gradient.xml:
Isso fornece preto - cinza - preto (da esquerda para a direita), que é o meu atm de fundo escuro favorito.
Lembre-se de adicionar gradient.xml como plano de fundo no seu xml de layout:
Também é possível girar, com:
fornece uma linha vertical
e com
fornece uma linha horizontal
Os ângulos possíveis são:
Também existem alguns tipos diferentes de formas:
Forma arredondada:
e provavelmente mais alguns.
Espero que ajude, felicidades!
fonte
No arquivo extraível XML:
No seu arquivo de layout: android: background = "@ drawable / gradient_background"
fonte
Tente remover o android: gradientRadius = "90". Aqui está um que funciona para mim:
fonte
Meu problema foi que a extensão .xml não foi adicionada ao nome do arquivo XML recém-criado. A adição da extensão .xml corrigiu meu problema.
fonte
Com o Kotlin, você pode fazer isso em apenas 2 linhas
Alterar valores de cores na matriz
Resultado
fonte
Não sei se isso vai ajudar alguém, mas meu problema era que eu estava tentando definir o gradiente para a propriedade "src" de um ImageView da seguinte maneira:
Não tenho 100% de certeza por que isso não funcionou, mas agora eu mudei e coloquei o drawable na propriedade "background" do pai do ImageView, que é um RelativeLayout no meu caso, assim: (isso funcionou com êxito)
fonte
Gostaria de verificar o seu canal alfa em suas cores de gradiente. Para mim, quando eu estava testando meu código, o canal alfa estava errado nas cores e não funcionou para mim. Depois que eu consegui o canal alfa, tudo funcionou!
fonte
Você pode usar uma exibição personalizada para fazer isso. Com esta solução, foram finalizadas as formas de gradiente de todas as cores em seus projetos:
Também crio um projeto de código aberto GradientView com esta visualização personalizada:
https://github.com/lopspower/GradientView
fonte