it-swarm-id.com

bagaimana cara mengubah gambar latar belakang tombol ketika diklik/fokus?

Saya ingin mengubah gambar latar tombol ketika diklik atau difokuskan.

Ini kode saya:

Button tiny = (Button)findViewById(R.id.tiny);
tiny.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        Button tiny = (Button)findViewById(R.id.tiny);
        tiny.setBackgroundResource(R.drawable.a9p_09_11_00754);

        TextView txt = (TextView)findViewById(R.id.txt);
        txt.setText("!---- On click ----!");
    }
});

Apakah kode ini benar? Apakah ia memanggil tombol pada acara tersebut?

40
omid nazifi

anda dapat menerapkan dalam file xml untuk ini sebagai berikut:

<selector xmlns:Android="http://schemas.Android.com/apk/res/Android">
<item Android:state_focused="true" Android:drawable="@drawable/your_imagename_while_focused"/>
<item Android:state_pressed="true" Android:drawable="@drawable/your_imagename_while_pressed" />
<item Android:drawable="@drawable/image_name_while_notpressed" />  //means normal
</selector>

sekarang simpan file xml ini di folder drawable dan beri nama suppos abc.xml dan atur sebagai berikut

 Button tiny = (Button)findViewById(R.id.tiny);
 tiny.setBackgroundResource(R.drawable.abc);

Semoga ini bisa membantu Anda. :)

90
Android Killer

Sangat mudah diimplementasikan. Untuk itu, Anda perlu membuat file satu xml (file pemilih) dan memasukkannya ke dalam folder yang dapat ditarik di res. Setelah itu atur file xml di latar belakang tombol di file tata letak Anda.

button_background_selector.xml

<?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="false" Android:drawable="@drawable/your_hover_image" />
    <item Android:state_focused="true" Android:state_pressed="true" Android:drawable="@drawable/your_hover_image" />
    <item Android:state_focused="false" Android:state_pressed="true" Android:drawable="@drawable/your_hover_image"/>
    <item Android:drawable="@drawable/your_simple_image" />
</selector>

Sekarang atur file di atas di latar tombol.

<Button
    Android:layout_width="fill_parent" 
    Android:layout_height="wrap_content"
    Android:textColor="@color/grey_text"
    Android:background="@drawable/button_background_selector"/>
55
Chirag

Maaf ini salah.

Untuk mengubah warna latar belakang/gambar berdasarkan peristiwa tertentu (fokus, tekan, normal), Anda perlu menentukan file pemilih tombol dan mengimplementasikannya sebagai latar belakang tombol.

Misalnya: button_selector.xml (tentukan file ini di dalam folder drawable)

<?xml version="1.0" encoding="utf-8"?>
 <selector xmlns:Android="http://schemas.Android.com/apk/res/Android">
     <item Android:state_pressed="true"
           Android:color="#000000" /> <!-- pressed -->
     <item Android:state_focused="true"
           Android:color="#000000" /> <!-- focused -->
     <item Android:color="#FFFFFF" /> <!-- default -->
 </selector>

    <!-- IF you want image instead of color then write 
Android:drawable="@drawable/your_image" inside the <item> tag -->

Dan terapkan sebagai:

 <Button
      Android:layout_width="wrap_content"
      Android:layout_height="wrap_content"
      Android:drawable="@drawable/button_selector.xml" />
8
Paresh Mayani

gunakan kode ini

<?xml version="1.0" encoding="utf-8"?>
  <selector xmlns:Android="http://schemas.Android.com/apk/res/Android">
  <item 
     Android:state_pressed="true" 
     Android:drawable="@drawable/buutton_pressed" />
  <item 
     Android:drawable="@drawable/button_image" />
</selector>

dan di file tombol xml

 Android:background="@drawable/button"
5

Untuk mengubah latar belakang tombol, kita dapat mengikuti 2 metode

  1. Di tombol OnClick, cukup tambahkan kode ini:

     public void onClick(View v) {
         if(v == buttonName) {
            buttonName.setBackgroundDrawable
             (getResources().getDrawable(R.drawable.imageName_selected));
          }
    
           }
    

    2. Buat button_background.xml di folder yang dapat digambar. (Menggunakan xml)

    res -> drawable -> button_background.xml

       <?xml version="1.0" encoding="UTF-8"?>
        <selector xmlns:Android="http://schemas.Android.com/apk/res/Android">
    
             <item Android:state_selected="true"
                   Android:drawable="@drawable/tabs_selected" /> <!-- selected-->
             <item Android:state_pressed="true"
                   Android:drawable="@drawable/tabs_selected" /> <!-- pressed-->
             <item  Android:drawable="@drawable/tabs_selected"/>
        </selector>
    

    Sekarang atur file di atas di file latar tombol.

         <Button
               Android:layout_width="fill_parent" 
               Android:layout_height="wrap_content"
               Android:background="@drawable/button_background"/>
    
                              (or)
    
             Button tiny = (Button)findViewById(R.id.tiny);
                   tiny.setBackgroundResource(R.drawable.abc);
    

    Metode 2 lebih baik untuk mengatur tombol latar belakang fd

3
Ann

Anda hanya perlu mengatur latar belakang dan memberikan file before.xml di latar tombol di file tata letak Anda.

<Button
 Android:id="@+id/button1"
 Android:background="@drawable/previous"
 Android:layout_width="200dp"
 Android:layout_height="126dp"
 Android:text="Hello" />

dan selesai.Edit Berikut adalah file before.xml dalam direktori drawable

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

<item Android:drawable="@drawable/onclick" Android:state_selected="true"></item>
<item Android:drawable="@drawable/onclick" Android:state_pressed="true"></item>
<item Android:drawable="@drawable/normal"></item>

2
Sanam Baig

Anda juga dapat membuat bentuk langsung di dalam tag item, jika Anda ingin menambahkan beberapa detail lainnya ke tampilan Anda, seperti ini:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:Android="http://schemas.Android.com/apk/res/Android">
    <item Android:state_pressed="true">
        <shape>
            <solid Android:color="#81ba73" />
            <corners Android:radius="6dp" />
        </shape>
        <ripple Android:color="#c62828"/>
    </item>
    <item Android:state_enabled="false">
        <shape>
            <solid Android:color="#788e73" />
            <corners Android:radius="6dp" />
        </shape>
    </item>
    <item>
        <shape>
            <solid Android:color="#add8a3" />
            <corners Android:radius="6dp" />
        </shape>
    </item>
</selector>

Waspadalah bahwa Android akan menggilir item dari atas ke bawah, oleh karena itu, Anda harus menempatkan item tanpa syarat di bagian bawah daftar (sehingga berfungsi seperti default/fallback).

0
Junior Damacena