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?


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.


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"

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.


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"/>

32

Anda juga dapat menggunakan: di xml Anda:

android:background="@null"

atau dalam kode:

buttonVariable.setBackgroundColor(Color.TRANSPARENT);

Suara positif untuk memberikan alternatif, suka melihat semua opsi!
Burkely91

18

Saya mencapai ini dengan dalam XML dengan

android:background="@android:color/transparent"

9

Saya menggunakan

btn.setBackgroundColor(Color.TRANSPARENT);

dan

android:background="@android:color/transparent"

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;
    }
});

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.


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"/>

0

Kode:

button.setVisibility(View.INVISIBLE);

Xml:

android:background="@android:color/transparent"

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.


-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.


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"

2
Mengapa menambahkan jawaban ini? Solusi ini sudah ada dalam dua jawaban lain, termasuk yang dengan suara terbanyak.
Makyen
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.