Ich habe eine Schaltfläche wie die folgende:
<Button
android:text="Submit"
android:id="@+id/Button01"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
</Button>
In meinem "onCreate()"-Ereignis rufe ich Button01 wie folgt auf:
setContentView(R.layout.main);
View Button01 = this.findViewById(R.id.Button01);
Button01.setOnClickListener(this);
In der Anwendung gibt es einen Hintergrund, und ich möchte eine Deckkraft für die Schaltfläche "Submit" festlegen. Wie kann ich eine Deckkraft für diese Ansicht festlegen? Kann ich sie auf der Java-Seite einstellen oder in der Datei main.xml?
Auf der Java-Seite habe ich Button01.mutate().SetAlpha(100)
ausprobiert, aber es gab einen Fehler.
Ich würde vorschlagen, dass Sie eine benutzerdefinierte ARGB-Farbe in Ihrer colors.xml-Datei erstellen, z. B. :
<resources>
<color name="translucent_black">#80000000</color>
</resources>
dann setzen Sie den Hintergrund Ihrer Schaltfläche auf diese Farbe:
android:background="@android:color/translucent_black"
Wenn du mit der Form der Schaltfläche spielen willst, kannst du auch eine Shape drawable resource erstellen, in der du die Eigenschaften einstellst, wie die Schaltfläche aussehen soll:
Datei: 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>
Dann verwenden Sie das als Hintergrund für die Schaltfläche:
android:background="@drawable/rounded_corner_box"
Ich habe gerade Ihre Frage gefunden, während ich ein ähnliches Problem mit einer TextView hatte. Ich konnte es lösen, indem ich TextView erweitert und onSetAlpha
überschrieben habe. Vielleicht können Sie etwas ähnliches mit Ihrer Schaltfläche versuchen:
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"
Das obige ist etwas, das ich kenne... Ich denke, das Erstellen einer benutzerdefinierten Schaltflächenklasse ist die beste Idee
API Stufe 11 Vor kurzem bin ich auf dieses android:alpha xml-Attribut gestoßen, das einen Wert zwischen 0 und 1 annimmt. Die entsprechende Methode ist setAlpha(float).