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 événement onCreate()
, j'appelle 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 définir une opacité sur ce bouton de soumission. Comment puis-je définir une opacité pour cette vue ? Est-ce quelque chose que je peux définir du côté de Java ou dans le fichier main.xml ?
Côté java, j'ai essayé Button01.mutate().SetAlpha(100)
, mais j'ai obtenu une erreur.
Ce que je vous suggère de faire, c'est de créer une [couleur ARGB][1] personnalisée dans votre fichier colors.xml, comme suit :
<resources>
<color name="translucent_black">#80000000</color>
</resources>
puis de définir l'arrière-plan de votre bouton à cette couleur :
android:background="@android:color/translucent_black"
Une autre chose que vous pouvez faire si vous voulez jouer avec la forme du bouton est de créer une [Shape drawable resource][2] où vous définissez les propriétés auxquelles le bouton doit ressembler :
fichier : res/drawable/rounded_corner_box.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient
android:startColor="#80000000"
android:endColor="#80FFFFFF"
android:angle="45"/>
<padding android:left="7dp"
android:top="7dp"
android:right="7dp"
android:bottom="7dp" />
<corners android:radius="8dp" />
</shape>
Utilisez-le ensuite comme arrière-plan du bouton :
android:background="@drawable/rounded_corner_box"
[1] : http://developer.android.com/guide/topics/resources/more-resources.html#Color [2] : http://developer.android.com/guide/topics/resources/drawable-resource.html#Shape
Je viens de trouver votre question alors que j'avais le même problème avec un TextView. J'ai pu le résoudre, en étendant TextView et en surchargeant onSetAlpha
. Peut-être que vous pourriez essayer quelque chose de similaire avec votre bouton :
import android.content.Context;
import android.util.AttributeSet;
import android.widget.TextView;
public class AlphaTextView extends TextView {
public AlphaTextView(Context context) {
super(context);
}
public AlphaTextView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public AlphaTextView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
@Override
public boolean onSetAlpha(int alpha) {
setTextColor(getTextColors().withAlpha(alpha));
setHintTextColor(getHintTextColors().withAlpha(alpha));
setLinkTextColor(getLinkTextColors().withAlpha(alpha));
return true;
}
}
android:background="@android:color/transparent"
Ce qui précède est quelque chose que je connais... Je pense que créer une classe de bouton personnalisée est la meilleure idée.
API Niveau 11 Récemment, je suis tombé sur cet attribut xml [android:alpha][1] qui prend une valeur entre 0 et 1. La méthode correspondante est [setAlpha(float)][2].
[1] : http://developer.android.com/reference/android/view/View.html#attr_android:alpha [2] : http://developer.android.com/reference/android/view/View.html#setAlpha%28float%29