Comment Définir l'Opacité (Alpha) pour Afficher dans Android
J'ai un bouton comme dans l'exemple suivant:
<Button
android:text="Submit"
android:id="@+id/Button01"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
</Button>
Dans mon onCreate()
cas, je vais appeler Button01 comme ceci:
setContentView(R.layout.main);
View Button01 = this.findViewById(R.id.Button01);
Button01.setOnClickListener(this);
Il y a un arrière-plan dans l'application, et je veux mettre une opacité sur ce bouton soumettre. Comment puis-je définir une opacité de ce point de vue? Est-ce quelque chose que je peux mettre sur le java côté, ou puis-je le mettre dans le main.xml fichier?
Sur le java côté, j'ai essayé Button01.mutate().SetAlpha(100)
, mais il m'a donné une erreur.
Vous devez vous connecter pour publier un commentaire.
Je viens de découvrir votre question, tout en ayant le même problème avec un TextView. J'ai été en mesure de résoudre, par l'extension de TextView et dominante
onSetAlpha
. Peut-être que vous pourriez essayer quelque chose de similaire avec votre bouton:Je suis surpris par tout le monde BEAUCOUP plus compliqué réponses.
XML
Vous pouvez très simplement définir l'alpha dans la définition de la couleur du bouton (ou tout autre point de vue) dans votre xml:
Dans l'exemple ci-dessus, la couleur serait partiellement transparent rouge.
Lors de la définition de la couleur d'un point de vue, le format peut être
#RRGGBB
ou#AARRGGBB
, oùAA
est le sortilège de la valeur alpha.FF
serait complètement opaque et00
serait totalement transparent.Dynamiquement
Si vous avez besoin de modifier dynamiquement l'opacité dans votre code, utilisez
Où l'INT varie de
0
(complètement transparent) à255
(complètement opaque).android:color
attribut.255
Déc seraitFF
Hex.background
l'opacité n'est pasview
opacité. Pas d'équivalents dans de nombreux cas d'utilisationJe suppose que vous avez déjà trouvé la réponse, mais si non (et pour les autres développeurs), vous pouvez le faire comme ceci:
Ici, j'ai mis l'opacité à 45. Vous pouvez la définir à partir de rien entre 0(complètement transparent) à 255 (complètement opaque)
Ce que je vous suggère de faire est de créer un personnalisé ARGB de la couleur dans votre colors.xml fichier tels que :
puis réglez votre arrière-plan du bouton à la couleur :
Une autre chose que vous pouvez faire si vous voulez jouer avec la forme du bouton est de créer un Forme drawable ressources où vous définissez les propriétés de ce que le bouton doit ressembler à :
fichier: res/drawable/rounded_corner_box.xml
Puis de l'utiliser comme arrière-plan du bouton :
Selon le android docs vue alpha est une valeur entre 0 et 1. Ainsi, pour définir l'utiliser quelque chose comme ceci:
Beaucoup plus facile à partir de ci-dessus.
Par défaut alpha attribut est-il pour le bouton de
La plage est comprise entre 0 pour la transparence et 1 pour une opacité totale.
Ci-dessus est quelque chose que je connais...
Je pense que la création d'un bouton personnalisé de classe est la meilleure idée
API de Niveau 11
Récemment je suis tombé sur ce android:alpha attribut xml qui prend une valeur entre 0 et 1. La méthode correspondante est setAlpha(float).
@android:color/transparent
comme arrière-plan sera en effet de rendre la vue complètement transparent. Le@android:alpha
- partie semble être un additif.Bien que
btnMybutton.getBackground().setAlpha(45);
est belle idée, il suffit d'appliquer de l'alpha à l'arrière-plan et non l'ensemble de la vue.Si vous souhaitez appliquer l'alpha à l'utilisation de vue
btnMybutton.setAlpha(0.30f);
à la place. Cela s'applique opacité de Vue. Il accepte une valeur entre 0 et 1.Doc a dit:
J'ai rencontré ce problème avec ICS/JB parce que les boutons par défaut pour le Holo thème, qui contiennent des images qui sont un peu transparent. Pour le fond c'est particulièrement sensible.
Pain d'épice vs ICS+:
Copie sur l'ensemble de la drawable états et des images pour chaque résolution et de faire les images transparentes solide est une douleur, alors j'ai opté pour une solution de plus en plus sale: enroulez le bouton dans un support qui a un fond blanc. Voici un brut XML drawable (ButtonHolder) qui fait exactement cela:
Votre fichier XML
ButtonHolder.xml
styles.xml
Toutefois, cela entraîne une bordure blanche parce que le Holo bouton images incluent des marges pour tenir compte de la touche espace:
Donc la solution est de donner le fond blanc d'une marge (4dp a fonctionné pour moi) et des coins arrondis (2dp) pour masquer complètement le blanc encore faire le bouton solide:
ButtonHolder.xml
Le résultat final ressemble à ceci:
Vous devriez cible de ce style pour v14+, et de modifier ou d'exclure de pain d'épice/Nid d'abeille en raison de leur patrie de l'image du bouton tailles sont différentes de ICS et JB (par exemple ce style précis derrière un pain d'épice bouton permet d'obtenir un petit peu de blanc en dessous du bouton).
Pour une vue, vous pouvez définir l'opacité par la suite.
La propriété
view.setAlpha(int)
est obsolète depuis la version de l'API de plus de 11. Désormais, la propriété comme.setAlpha(0.5f)
est utilisé.Pour API < 11 pour textView couleur j'ai fait la suivante:
Un peu encombrant, mais bon, ça fonctionne 🙂
Je sais que cela a déjà un tas de réponses, mais j'ai trouvé que pour les boutons c'est juste plus simple pour créer votre propre .xml de sélecteurs et de définir qu'à l'arrière-plan du dit bouton. De cette façon, vous pouvez également changer l'état lorsqu'il est pressé ou activée et ainsi de suite. Voici un bref extrait de celui que j'utilise. Si vous souhaitez ajouter de la transparence à l'une des couleurs, ajouter un leader de la valeur hexadécimale (#XXcccccc). (XX == "alpha de la couleur")