2010-11-23 9 views
1

J'utilise une forme définie comme dessinable comme arrière-plan pour un TextView. Cela me permet d'ajouter des coins arrondis et d'autres effets. La forme est définie comme ceci:Définir la couleur d'une forme dessinable utilisée comme arrière-plan TextView dans Android

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> 
    <corners android:topLeftRadius="8dp" /> 
</shape> 

et je l'utilise comme ceci:

<TextView 
    android:id="@+id/project" 
    style="@style/textView" 
    android:background="@drawable/project_textview_background" 
/> 

Maintenant, je dois changer la couleur de cette TextView selon programme sur certaines conditions. Je n'ai pas été capable de faire ça.

  • J'ai essayé de faire setBackgroundColor mais cela semble remplacer l'arrière-plan que j'ai précédemment défini afin qu'il ne montre plus les coins arrondis.
  • J'ai regardé un tas d'autres méthodes de l'API, mais nulle part obtenu

Toute aide serait très apprécié. Merci Des idées?

+0

Pourriez-vous s'il vous plaît poster un peu de code? –

Répondre

2

la solution consistait en fait à définir la forme et la couleur du code au lieu d'utiliser une ressource pouvant être dessinée. J'ai utilisé PaintDrawable(int color) ce qui me permet de définir la couleur d'arrière-plan que je veux. Puis j'ai utilisé le setCornerRadoii (float []) pour définir les coins arrondis et enfin j'ai assigné l'objet PaintDrawable à mon background textView. Travaillé comme un charme.

0

Vous pouvez créer d'autres formes avec cet attribut de coin que vous avez déjà défini. La façon de remplir la cellule avec bgcolor est écrit dans la page web suivante. (Solide) http://developer.android.com/guide/topics/resources/drawable-resource.html#Shape

Et si les conditions que vous avez mentionnées dépendent de mise au point ou la presse, vous feriez mieux de faire à la place sélecteur de forme. Recherche par mot-clé "ColorStateList" dans android reference. Je veux laisser l'adresse, mais je ne peux pas en raison de ma réputation ;;;

+0

Je sais que c'est un peu étrange mais j'ai 12 couleurs différentes. Je voulais éviter de créer 12 formes différentes. Je vais jeter un autre coup d'oeil à la ColorStateList. Merci –

+0

Je ne compte pas sur les états de vue (activé, sélectionné, etc ...) donc je ne peux pas utiliser le ColorStateList. À moins qu'il y ait un moyen de définir des états personnalisés, mais je ne sais pas comment –

+0

Alors, que diriez-vous de créer un widget personnalisé dérivé de textview? – sonee