Έχω ένα κουμπί όπως στο παρακάτω:
<Button
android:text="Submit"
android:id="@+id/Button01"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
</Button>
Στο συμβάν onCreate()
, καλώ το κουμπί01 ως εξής:
setContentView(R.layout.main);
View Button01 = this.findViewById(R.id.Button01);
Button01.setOnClickListener(this);
Υπάρχει ένα φόντο στην εφαρμογή, και θέλω να ορίσω μια αδιαφάνεια σε αυτό το κουμπί υποβολής. Πώς μπορώ να ορίσω μια αδιαφάνεια για αυτή την προβολή; Είναι κάτι που μπορώ να ορίσω στην πλευρά της java ή μπορώ να το ορίσω στο αρχείο main.xml;
Στην πλευρά της java δοκίμασα Button01.mutate().SetAlpha(100)
, αλλά μου έδωσε σφάλμα.
Αυτό που θα σας πρότεινα να κάνετε είναι να δημιουργήσετε ένα προσαρμοσμένο χρώμα ARGB στο αρχείο colors.xml, όπως :
<resources>
<color name="translucent_black">#80000000</color>
</resources>
και στη συνέχεια ορίστε το φόντο του κουμπιού σας σε αυτό το χρώμα :
android:background="@android:color/translucent_black"
Ένα άλλο πράγμα που μπορείτε να κάνετε αν θέλετε να παίξετε με το σχήμα του κουμπιού είναι να δημιουργήσετε ένα Shape drawable resource όπου θα ορίσετε τις ιδιότητες με τις οποίες θα πρέπει να μοιάζει το κουμπί :
αρχείο: 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>
Στη συνέχεια, χρησιμοποιήστε το ως φόντο του κουμπιού :
android:background="@drawable/rounded_corner_box"
Μόλις βρήκα την ερώτησή σας, ενώ είχα παρόμοιο πρόβλημα με ένα TextView. Κατάφερα να το λύσω, επεκτείνοντας το TextView και παρακάμπτοντας το onSetAlpha
. Ίσως θα μπορούσατε να δοκιμάσετε κάτι παρόμοιο με το κουμπί σας:
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"
Τα παραπάνω είναι κάτι που γνωρίζω... Νομίζω ότι η δημιουργία μιας προσαρμοσμένης κλάσης κουμπιού είναι η καλύτερη ιδέα
API Level 11 Πρόσφατα συνάντησα αυτό το χαρακτηριστικό android:alpha xml το οποίο παίρνει μια τιμή μεταξύ 0 και 1. Η αντίστοιχη μέθοδος είναι setAlpha(float).