eu tenho
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid
android:color="#FFFF00" />
<padding android:left="7dp"
android:top="7dp"
android:right="7dp"
android:bottom="7dp" />
</shape>
<TextView
android:background="@drawable/test"
android:layout_height="45dp"
android:layout_width="100dp"
android:text="Moderate"
/>
Então agora eu quero que essa forma mude de cores com base nas informações que recebo de uma chamada de serviço da web. Talvez seja amarelo, verde ou vermelho, ou o que for, dependendo da cor que recebo da chamada de serviço da Web.
Como posso mudar a cor da forma? Com base nesta informação?
View.getBackground()
retorna aGradientDrawable
e nãoShapeDrawable
causa a falha do aplicativo em tempo de execução, devido à conversão inválida ao tentar obter a referência e definir a cor programaticamente. [Android Shape doc] ( developer.android.com/guide/topics/resources/… ) declara: DATATYPE DE RECURSOS COMPLETOS: ponteiro de recurso para aGradientDrawable
.Respostas:
Você pode modificá-lo simplesmente assim
fonte
java.lang.ClassCastException: android.graphics.drawable.GradientDrawable cannot be cast to android.graphics.drawable.ShapeDrawable
ao tentar esta sugestão.Para mim, ele caiu porque
getBackground
retornou umaGradientDrawable
vez de umShapeDrawable
.Então eu modifiquei assim:
fonte
Isso funciona para mim, com um recurso xml inicial:
Resultado do exposto acima: http://i.stack.imgur.com/hKUR7.png
fonte
Você pode criar suas próprias formas em Java. Eu fiz isso para um iPhone como o Page Controler e pintei as formas em Java:
espero que isto ajude. Greez Fabian
fonte
Talvez alguém precise alterar a cor no XML sem criar vários drawables como eu precisava. Em seguida, crie um círculo desenhável sem cor e especifique backgroundTint para o ImageView.
circle.xml
E no seu layout :
Editar:
Há um erro nesse método que impede que ele funcione no Android Lollipop 5.0 (nível de API 21). Mas foram corrigidos em versões mais recentes.
fonte
fonte
circle.xml (desenhável)
disposição
em atividade
fonte
Esta solução funcionou para mim usando o android sdk v19:
fonte
Se você tem um imageView assim:
que dão a ele uma forma desenhável como src, você pode usar este código para alterar a cor da forma:
fonte
Minha forma xml:
Minha atividade xml:
Minha atividade java:
Imagem do resultado : resultado
fonte
A maneira mais simples de preencher a forma com o Radius é:
XML:
Java:
fonte
Eu tento a resposta de Ronnie e meu aplicativo falhou. Então eu verifico meu xml drawable. Se parece com isso:
. Eu mudei para isso: (também alterei atributos)
Funciona.
Para quem encontra o mesmo problema.
fonte
drawable_rectangle.xml
TextView
fonte
Você pode usar um adaptador de ligação (Kotlin) para conseguir isso. Crie uma classe de adaptador de ligação denominada ChangeShapeColor como abaixo
Crie uma forma desenhável na pasta res / drawable. Eu criei um círculo
Finalmente, consulte-o
fonte