Saya memiliki tombol sebagai berikut:
<Button
android:text="Submit"
android:id="@+id/Button01"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
</Button>
Dalam onCreate()
acara saya , saya memanggil Button01 seperti ini:
setContentView(R.layout.main);
View Button01 = this.findViewById(R.id.Button01);
Button01.setOnClickListener(this);
Ada latar belakang dalam aplikasi, dan saya ingin mengatur opacity pada tombol kirim ini. Bagaimana saya bisa mengatur opacity untuk tampilan ini? Apakah ini sesuatu yang bisa saya atur di sisi java, atau dapatkah saya atur di file main.xml?
Di sisi java saya mencoba Button01.mutate().SetAlpha(100)
, tetapi memberi saya kesalahan.
Saya kagum dengan JAUH orang lain jawaban yang lebih rumit .
XML
Anda dapat dengan mudah mendefinisikan alfa dalam definisi warna tombol (atau tampilan lainnya) di xml Anda:
Pada contoh di atas, warnanya akan menjadi merah sebagian transparan.
Saat mendefinisikan warna tampilan, formatnya bisa berupa
#RRGGBB
atau#AARRGGBB
, di manaAA
adalah nilai hex alpha.FF
akan sepenuhnya buram dan00
akan transparan penuh.Secara dinamis
Jika Anda perlu mengubah opacity secara dinamis dalam kode Anda, gunakan
Di mana INT berkisar dari
0
(sepenuhnya transparan) hingga255
(sepenuhnya buram).sumber
android:color
atribut.background
opacity salah bukanview
opacity. Tidak setara dalam banyak kasus penggunaanSaya kira Anda mungkin sudah menemukan jawabannya, tetapi jika tidak (dan untuk pengembang lain), Anda dapat melakukannya seperti ini:
Di sini saya telah mengatur opacity menjadi 45. Pada dasarnya Anda dapat mengaturnya dari apa pun antara 0 (sepenuhnya transparan) hingga 255 (sepenuhnya buram)
sumber
Apa yang saya sarankan Anda lakukan adalah membuat warna ARGB khusus di file colors.xml Anda seperti:
lalu atur latar belakang tombol Anda ke warna itu:
Hal lain yang dapat Anda lakukan jika ingin bermain-main dengan bentuk tombol adalah membuat sumber daya Bentuk yang dapat digambar mana Anda mengatur properti seperti apa bentuk tombol itu:
file: res / drawable / rounded_corner_box.xml
Kemudian gunakan itu sebagai latar belakang tombol:
sumber
Menurut android docs view alpha adalah nilai antara 0 dan 1. Jadi untuk mengaturnya gunakan sesuatu seperti ini:
sumber
Jauh lebih mudah dari yang di atas. Atribut alpha default ada untuk tombol
Kisarannya antara 0 untuk transparan lengkap dan 1 untuk opacity lengkap.
sumber
Di atas adalah sesuatu yang saya tahu ... Saya pikir membuat kelas tombol kustom adalah ide terbaik
API Level 11
Baru-baru ini saya menemukan atribut android: alpha xml yang mengambil nilai antara 0 dan 1. Metode yang sesuai adalah setAlpha (float) .
sumber
@android:color/transparent
sebagai Latar Belakang memang akan membuat tampilan sepenuhnya transparan. Bagian@android:alpha
- tampaknya menjadi sebuah tambahan.Meskipun
btnMybutton.getBackground().setAlpha(45);
ide yang bagus, itu hanya menerapkan alpha ke latar belakang dan bukan seluruh tampilan.Jika Anda ingin menerapkan alfa untuk melihat gunakan
btnMybutton.setAlpha(0.30f);
saja. Ini berlaku opacity to View. Ini menerima nilai antara 0 dan 1.Doc mengatakan:
sumber
Saya mengalami masalah dengan ICS / JB ini karena tombol default untuk tema Holo terdiri dari gambar yang sedikit transparan. Untuk latar belakang, ini terutama terlihat.
Roti jahe vs ICS +:
Menyalin semua status dan gambar yang dapat digambar untuk setiap resolusi dan membuat gambar transparan menjadi padat, jadi saya memilih solusi yang lebih kotor: bungkus tombol di dudukan yang memiliki latar belakang putih. Inilah drawable XML mentah (ButtonHolder) yang melakukan hal itu:
File XML Anda
ButtonHolder.xml
styles.xml
Namun, ini menghasilkan batas putih karena gambar tombol Holo menyertakan margin untuk memperhitungkan ruang yang ditekan:
Jadi solusinya adalah memberikan latar belakang putih margin (4dp bekerja untuk saya) dan sudut bulat (2dp) untuk benar-benar menyembunyikan putih namun membuat tombol solid:
ButtonHolder.xml
Hasil akhirnya terlihat seperti ini:
Anda harus menargetkan gaya ini untuk v14 +, dan men-tweak atau mengecualikannya untuk Gingerbread / Honeycomb karena ukuran gambar tombol asli mereka berbeda dari ICS dan JB's (misalnya gaya yang tepat di belakang tombol Gingerbread ini menghasilkan sedikit putih di bawah tombol).
sumber
Untuk tampilan, Anda dapat mengatur opacity dengan yang berikut ini.
Properti
view.setAlpha(int)
ini ditinggalkan untuk versi API lebih besar dari 11. Selanjutnya, properti seperti.setAlpha(0.5f)
digunakan.sumber
Untuk API <11 untuk warna textView, saya melakukan hal berikut:
Sedikit rumit, tapi hei, itu bekerja :-)
sumber
Saya tahu ini sudah memiliki banyak jawaban, tetapi saya menemukan bahwa untuk tombol, lebih mudah untuk membuat pemilih .xml Anda sendiri dan mengaturnya ke latar belakang tombol tersebut. Dengan begitu Anda juga bisa mengubahnya saat ditekan atau diaktifkan dan sebagainya. Berikut ini cuplikan singkat yang saya gunakan. Jika Anda ingin menambahkan transparansi ke salah satu warna, tambahkan nilai hex terkemuka (#XXcccccc). (XX == "alfa warna")
sumber