Eu tenho um botão como no seguinte:
<Button
android:text="Submit"
android:id="@+id/Button01"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
</Button>
No meu evento onCreate()
, eu estou chamando Button01 assim:
setContentView(R.layout.main);
View Button01 = this.findViewById(R.id.Button01);
Button01.setOnClickListener(this);
Há um fundo na aplicação, e eu quero definir uma opacidade neste botão submeter. Como posso definir uma opacidade para esta vista? É algo que eu posso definir no lado java, ou posso definir no arquivo main.xml?
No lado java eu tentei Button01.mutate().SetAlpha(100)
, mas isso me deu um erro.
O que eu sugeriria que você criasse um arquivo personalizado ARGB color em seu arquivo color.xml, como o :
<resources>
<color name="translucent_black">#80000000</color>
</resources>
e, em seguida, defina o fundo do botão para essa cor :
android:background="@android:color/translucent_black"
Outra coisa que você pode fazer se quiser brincar com o formato do botão é criar um recurso de desenho de forma onde você configura as propriedades como o botão deve ser :
arquivo: 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>
Então use isso como fundo do botão :
android:background="@drawable/rounded_corner_box"
Acabei de encontrar a sua pergunta enquanto tinha o mesmo problema com um TextView. Consegui resolvê-lo, estendendo o TextView e substituindo o onSetAlpha
. Talvez você pudesse tentar algo similar com o seu botão:
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"
O acima é algo que eu sei... Eu acho que criar uma classe de botões personalizada é a melhor ideia
**API Nível 11*** Recentemente encontrei este atributo android:alpha xml que toma um valor entre 0 e 1. O método correspondente é setAlpha(float).