Latar belakang tombol transparan

177

Saya punya tombol. Ketika saya menekan tombol saya harus membuat teks sebagai huruf tebal kalau tidak normal. Jadi saya menulis gaya untuk tebal & normal.

<style name="textbold" parent="@android:style/TextAppearance">
<item name="android:layout_width">wrap_content</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:textStyle">bold</item>
</style>
<style name="textregular" parent="@android:style/TextAppearance">
<item name="android:layout_width">wrap_content</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:textStyle">normal</item>
</style>

Sekarang saya memiliki button_states.xml sebagai:

<?xml version="1.0" encoding="utf-8"?>

<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_focused="true" android:state_pressed="true"
    style="@style/textbold" />
<item android:state_focused="false" android:state_pressed="true"
    style="@style/textregular" />

<item style="@style/textregular" />
</selector> 

Dalam tata letak saya untuk tombol ini, saya harus membuat latar belakang menjadi transparan juga ... Bagaimana saya akan melakukannya? Kode tata letak saya adalah:

<Button android:id="@+id/Btn" android:background="@drawable/button_states" />

Bagaimana saya akan memasukkan latar belakang transparan dalam gaya saya?

Anju
sumber
3
Begitu banyak dari jawaban yang baik ini dapat diterima sekarang ...
QED
lihat jawaban ini di sini untuk membuat tombol transparan dengan perbatasan
Basheer AL-MOMANI
'kenapa kamu tidak menggunakan TextView saja dan memanggil tindakan di onKlik?
Dula wnRp

Jawaban:

360

Untuk membuat latar belakang transparan, lakukan saja android:background="@android:color/transparent".

Namun, masalah Anda tampaknya sedikit lebih dalam, karena Anda menggunakan penyeleksi dengan cara yang sangat aneh. Cara Anda menggunakannya tampaknya salah, meskipun jika itu benar-benar berfungsi, Anda harus meletakkan gambar latar dalam gaya sebagai <item/>.

Lihatlah lebih dekat bagaimana gaya digunakan dalam sumber Android. Meskipun mereka tidak mengubah gaya teks setelah mengklik tombol, ada banyak ide bagus tentang bagaimana mencapai tujuan Anda di sana.

Steve Pomeroy
sumber
1
Lihatlah jawaban saya yang diklarifikasi. Saya salah membaca masalah Anda untuk memulai. Latar belakang diatur dalam gaya.
Steve Pomeroy
Maaf, saya tidak jelas solusinya. Hanya pengaturan @android: warna / transparan tidak mendukung gaya on-touch yang dimiliki tombol normal (dan setara dengan pengaturan latar belakang ke @null).
gatoatigrado
@gatoatigrado: apakah maksud Anda bahwa Anda ingin area transparan diuraikan oranye atau diarsir dalam beberapa apa? Jika demikian, Anda harus membuat gambar 9-patch khusus untuk itu.
Steve Pomeroy
@StevePomeroy, ya, efek tombol default pada Android 4.1 adalah untuk [on button press] latar belakang menjadi biru muda, dengan garis biru lebih terang.
gatoatigrado
@gatoatigrado: ok. Jika Anda menginginkannya, maka Anda tidak dapat menggunakan tombol transparan. Saya tidak yakin apa yang ingin Anda capai di sana.
Steve Pomeroy
121

Coba cara baru untuk mengatur latar belakang transparan

    android:background="?android:attr/selectableItemBackground"
Muhammad Aamir Ali
sumber
9
Inilah yang akan saya rekomendasikan untuk digunakan. Dengan cara ini, Anda dapat menyimpan animasi desain bahan yang indah untuk kancing Anda =)
Ryan Newsom
ini jawaban yang lebih baik
Marcos Dávalos
35

gunakan #0000(hanya empat nol jika tidak akan dianggap sebagai black) ini adalah kode warna untuk transparan. Anda dapat menggunakannya secara langsung tetapi saya sarankan Anda untuk menentukan warna dalam color.xml sehingga Anda dapat menikmati kegunaan ulang kode.

Prasham
sumber
9
Untungnya ini telah ditetapkan bagi kita sebagai@android:color/transparent
Richard Le Mesurier
34

Tambahkan ini di Xml Anda -android:background="@android:color/transparent"

        <Button
            android:id="@+id/button1"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:text="Button"
            android:background="@android:color/transparent"
            android:textStyle="bold"/>
Mohanraj
sumber
32

Anda juga dapat menggunakan: di xml Anda:

android:background="@null"

atau dalam kode:

buttonVariable.setBackgroundColor(Color.TRANSPARENT);
Hunkeone
sumber
Suara positif untuk memberikan alternatif, suka melihat semua opsi!
Burkely91
18

Saya mencapai ini dengan dalam XML dengan

android:background="@android:color/transparent"
C. Skjerdal
sumber
9

Saya menggunakan

btn.setBackgroundColor(Color.TRANSPARENT);

dan

android:background="@android:color/transparent"
Sindri Þór
sumber
btn.setBackgroundColor (Color.TRANSPARENT); berfungsi dengan baik untuk saya
jay_mziray
8

Selektor hanya berfungsi untuk gambar, bukan gaya. Referensi


Pertama , untuk membuat latar belakang tombol transparan, gunakan atribut berikut karena ini tidak akan mempengaruhi animasi desain material:

style="?attr/buttonBarButtonStyle"

Ada banyak cara untuk menata tombol Anda. Lihatlah tutorial ini .

Kedua , untuk membuat teks tebal ditekan, gunakan kode java ini:

btn.setOnTouchListener(new View.OnTouchListener() {
    @Override
    public boolean onTouch(View v, MotionEvent event) {

        switch (event.getAction()) {
            // When the user clicks the Button
            case MotionEvent.ACTION_DOWN:
                btn.setTypeface(Typeface.DEFAULT_BOLD);
                break;

            // When the user releases the Button
            case MotionEvent.ACTION_UP:
                btn.setTypeface(Typeface.DEFAULT);
                break;
        }
        return false;
    }
});
Faraz
sumber
1

Anda dapat mencapainya dengan mengatur saluran alpha warna.

Skema warna seperti ini #AARRGGBB ada A singkatan saluran alpha (transparansi), R singkatan merah, G untuk hijau dan B untuk biru.

Raphael S
sumber
1

Langkah 1: Buat file sumber baru di drawable dan copy paste

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">

    <stroke android:color="#fff" android:width="2dp"/>
    <corners android:radius="25dp"/>
    <padding android:right="15dp" android:top="15dp" android:bottom="15dp" android:left="15dp"/>
</shape>

simpan sebagai ButtonUI (katakanlah)

Langkah 2: Terapkan UI ke tombol xml

<Button
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:text="join the crew"
  android:background="@drawable/ButtonUI"
  android:textColor="#fff"/>
Viraj Singh
sumber
0

Kode:

button.setVisibility(View.INVISIBLE);

Xml:

android:background="@android:color/transparent"
Kepala Madog
sumber
0

Kita dapat menggunakan atribut android: background di Button xml seperti di bawah ini.

android:background="?android:attr/selectableItemBackground"

Atau kita bisa menggunakan style

style="?android:attr/borderlessButtonStyle" untuk latar belakang transparan dan kurang bayangan.

Shihab Uddin
sumber
-2

Anda menerapkan warna latar belakang seperti transparent(light gray)ketika Anda mengklik tombol.

ButtonName.setOnClickListener()

Dalam metode di atas Anda mengatur warna latar belakang tombol.

Pinki
sumber
6
Khawatir bahwa ini dibatalkan. Tolong jangan lakukan ini. Pemelihara masa depan akan mengutuk nama Anda. Atur latar belakang dengan pemilih, dan miliki satu warna / dapat digambar untuk ditekan dan satu untuk tidak. Jangan menulis kode untuk mengubahnya di pendengar - BUKAN cara ini dilakukan.
themightyjon
-2

Anda dapat melakukannya dengan mudah dengan menambahkan atribut di bawah ini dalam file xml. Kode ini diuji banyak waktu.

android:background="@android:color/transparent"
Chamath Jeevan
sumber
2
Mengapa menambahkan jawaban ini? Solusi ini sudah ada dalam dua jawaban lain, termasuk yang dengan suara terbanyak.
Makyen