Android Standard Bouton avec une couleur différente
J'aimerais changer la couleur d'un standard Android bouton légèrement afin de mieux correspondre à un client de la marque.
Le meilleur moyen que j'ai trouvé pour ce faire, jusqu'à présent, est de changer la Button
's dessiné le dessiné situé dans res/drawable/red_button.xml
:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:drawable="@drawable/red_button_pressed" />
<item android:state_focused="true" android:drawable="@drawable/red_button_focus" />
<item android:drawable="@drawable/red_button_rest" />
</selector>
Mais cela nécessite que je me créer trois un drawable pour chaque bouton que je veux personnaliser (un pour le bouton au repos, quand un concentré, et une fois pressé). Cela semble plus compliqué et SEC que j'ai besoin.
Tout ce que je veux vraiment faire, c'est faire une sorte de transformation de couleurs pour le bouton. Est-il un moyen plus facile d'aller sur la modification d'un bouton de couleur que je suis en train de faire?
- Et ici aussi android.onyou.ch/2011/01/25/...
Vous devez vous connecter pour publier un commentaire.
J'ai découvert que cela peut être fait dans un fichier assez facilement. Mettez quelque chose comme le code suivant dans un fichier nommé
custom_button.xml
et puis définissezbackground="@drawable/custom_button"
dans le bouton afficher:"Error: No resource found that matches the given name (at 'color' with value '@color/yellow1')"
Sont ces références à la construit en couleurs? semble que j'ai besoin d'un res/values/color.xml pour faire ce travailLa suite de Tomasz réponse, vous pouvez également définir par programmation à l'ombre de l'intégralité du bouton à l'aide de la PorterDuff mode multiplier. Cela va changer le bouton de couleur plutôt que de simplement la teinte.
Si vous commencez avec un standard gris ombragé bouton:
vous donnera un ombragée rouge bouton,
vous donnera un vert sombre bouton etc., dans lequel la première valeur est la couleur au format hexadécimal.
Il fonctionne en multipliant le bouton de la valeur de la couleur couleur de la valeur. Je suis sûr qu'il y est aussi beaucoup plus que vous pouvez faire avec ces modes.
import android.graphics.PorterDuff;
Mike, vous pourriez être intéressés par des filtres de couleur.
Un exemple:
essayez ceci pour obtenir la couleur que vous voulez.
C'est ma solution qui fonctionne parfaitement départ à partir de l'API de 15. Cette solution conserve tous par défaut cliquez sur le bouton effets, comme matériau
RippleEffect
. Je ne l'ai pas testé sur le bas des Api, mais il devrait fonctionner.Tout ce que vous devez faire est:
1) Créer un style qui change seulement
colorAccent
:2) Ajouter ces deux lignes dans votre
button
widget:Un exemple de Bouton de widget de
colorAccent
influences plus que juste le fond du bouton.colorAccent
, un pour chaque Bouton, Fab, etc.Vous pouvez également utiliser la appcompat-v7 est AppCompatButton avec le
backgroundTint
attribut:app:backgroundTint
au lieu deandroid:backgroundTint
lors de l'utilisation de AppCompat.J'aime la couleur du filtre de suggestion dans les précédentes réponses de @conjugatedirection et @Tomasz; Cependant, j'ai trouvé que le code fourni jusqu'à présent n'était pas aussi facile à appliquer comme je m'y attendais.
Tout d'abord, il n'a pas mentionné de où à appliquer et à effacer le filtre de couleur. Il est possible qu'il existe d'autres bons endroits pour le faire, mais ce qui m'est venu à l'esprit pour moi a été une OnTouchListener.
De ma lecture de la question d'origine, la solution idéale serait celle qui ne comporte pas d'images. La accepté de répondre à l'aide de custom_button.xml à partir de @emmby est probablement un meilleur choix que les filtres de couleur si c'est votre but. Dans mon cas, je commence avec une image png à partir d'un concepteur d'INTERFACE utilisateur de ce que le bouton est censé ressembler. Si j'ai mis le bouton arrière-plan de cette image, le défaut de mettre en évidence la rétroaction est complètement perdu. Ce code remplace ce comportement avec des programmes effet d'obscurcissement.
J'ai extrait ceci comme une catégorie distincte pour l'application de plusieurs boutons sont affichés en tant qu'anonyme intérieure classe juste pour se faire une idée.
Si vous faites des boutons de couleur avec XML, vous pouvez rendre le code un peu plus propre en spécifiant le concentré et l'état enfoncé dans un fichier séparé et de les réutiliser. Mon bouton vert ressemble à ceci:
Les plus brefs solution qui fonctionne avec n'importe quel version d'Android:
Remarques/Exigences:
app:
espace de noms et pas laandroid:
espace de noms!appcompat version > 24.2.0
dépendances {
compiler 'com.android.support:appcompat-v7:25.3.1'
}
Explication:
app:backgroundTint="@color/my_color"
n'a pas de travail.android:backgroundTint="@color/my_color"
fonctionnait parfaitement bien.Je suis en utilisant cette approche
style.xml
Comme vous pouvez le voir ci-dessus, je suis en utilisant un style personnalisé pour mon bouton. Le bouton de couleur correspondant à la couleur d'accent. Je trouve que c'est une bien meilleure approche que de fixer
android:background
que je ne vais pas perdre de l'effet d'entraînement de Google fournit.Il y a un moyen beaucoup plus facile maintenant : android-holo-colors.com
Il vous permettra de changer les couleurs de tous les holo un drawable (boutons, les filateurs, ...) facilement. Vous sélectionnez la couleur, puis de télécharger un fichier zip contenant un drawable pour toutes les résolutions.
L'utiliser de cette façon:
Dans
<Button>
utilisationandroid:background="#33b5e5"
. ou mieuxandroid:background="@color/navig_button"
La DroidUX composant la bibliothèque dispose d'un
ColorButton
widget dont la couleur peut être changée facilement, à la fois via xml de définition et par programme au moment de l'exécution, de sorte que vous pouvez même permettre à l'utilisateur de définir la couleur du bouton/thème si votre application le permet.Vous pouvez Également utiliser cet outil en ligne pour personnaliser votre bouton http://angrytools.com/android/button/ et l'utilisation
android:background="@drawable/custom_btn"
pour définir le bouton personnalisé dans votre mise en page.Vous pouvez définir le thème de votre bouton de ce
Un moyen facile est de simplement définir un Bouton personnalisé de classe qui accepte toutes les propriétés que vous avez le désir de rayon de, dégradé, pressé de couleur, de couleur normale etc. et puis il suffit de l'utiliser dans votre XML mises en page au lieu de la configuration de l'arrière-plan à l'aide de XML. Un échantillon est ici
Ce qui est extrêmement utile si vous avez beaucoup de boutons avec les mêmes propriétés de rayon, choisis la couleur etc. Vous pouvez personnaliser votre hérité bouton pour gérer ces propriétés supplémentaires.
Résultat (Pas de Fond sélecteur a été utilisé).
Bouton Normal
Appuyer Sur Le Bouton
La façon dont je ne un style différent bouton qui fonctionne très bien est une classe de l'objet Bouton et d'appliquer un filtre de couleur. Ce gère également activé et désactivé par l'application d'une alpha pour le bouton.
values\styles.xml
alors:
Par la conception de matériaux de lignes directrices, vous devez utiliser le style comme
ci-dessous le code
et dans la mise en page ajouter cette propriété à votre bouton
Sa simple.. ajouter cette dépendance dans votre projet et de créer un bouton avec
1. Toute forme
2. N'importe quelle couleur
3. De toute frontière
4. Avec des effets importants
https://github.com/manojbhadane/QButton