Jeg har en knapp som i det følgende:
<Button
android:text="Submit"
android:id="@+id/Button01"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
</Button>
I min onCreate()
-hendelse kaller jeg Button01 slik:
setContentView(R.layout.main);
View Button01 = this.findViewById(R.id.Button01);
Button01.setOnClickListener(this);
Det er en bakgrunn i applikasjonen, og jeg ønsker å angi en opasitet på denne send-knappen. Hvordan kan jeg angi en opasitet for denne visningen? Er det noe jeg kan angi på java-siden, eller kan jeg angi det i main.xml-filen?
På java-siden prøvde jeg Button01.mutate().SetAlpha(100)
, men det ga meg en feil.
Det jeg vil foreslå at du gjør er å opprette en tilpasset ARGB-farge i colors.xml-filen din, f.eks:
<resources>
<color name="translucent_black">#80000000</color>
</resources>
og deretter sette knappens bakgrunn til den fargen:
android:background="@android:color/translucent_black"
En annen ting du kan gjøre hvis du vil leke med knappens form, er å opprette en Shape drawable resource der du setter opp egenskapene for hvordan knappen skal se ut:
fil: 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>
Bruk den deretter som knappebakgrunn:
android:background="@drawable/rounded_corner_box"
Jeg fant nettopp spørsmålet ditt mens jeg hadde det samme problemet med en TextView. Jeg klarte å løse det ved å utvide TextView og overstyre onSetAlpha
. Kanskje du kan prøve noe lignende med knappen din:
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"
Ovennevnte er noe jeg vet... Jeg tror å lage en egendefinert knappeklasse er den beste ideen...
API nivå 11 Nylig kom jeg over dette android:alpha xml-attributtet som tar en verdi mellom 0 og 1. Den tilsvarende metoden er setAlpha(float).