Come cambiare il colore di Button in Android quando viene cliccato?

Sto lavorando all'applicazione Android. Voglio avere 4 pulsanti per essere posizionati orizzontalmente nella parte inferiore dello schermo. In questi 4 pulsanti, 2 pulsanti hanno immagini su di loro. Il bordo dei pulsanti dovrebbe essere di colore nero e il bordo dovrebbe essere il più sottile ansible. Quando faccio clic sul button, voglio che lo background del button deve essere cambiato in colore blu senza essere cambiato il colore del bordo e dovrebbe rimanere in quel colore per qualche tempo. Come posso raggiungere questo scenario in Android?

  • Come disegnare il cerchio di base in OpenGL ES 2.0 Android
  • Come posso call la schermata delle impostazioni Wi-Fi dalla mia applicazione utilizzando Android?
  • Lazy scarica le immagini in gridView
  • I caratteri ttf personalizzati non vengono visualizzati correttamente in TextView su Android 4.4 KitKat
  • Ordinamento della string personalizzata della class di arrays di class utilizzando Collections.sort
  • Importzione della libreria di Facebook in Android Studio: imansible trovare la properties; 'ANDROID_BUILD_SDK_VERSION'
  • 11 Solutions collect form web for “Come cambiare il colore di Button in Android quando viene cliccato?”

    Un approccio è quello di creare un file XML simile a quello drawable , chiamato whatever.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="true" android:drawable="@drawable/bgalt" /> <item android:state_focused="false" android:state_pressed="true" android:drawable="@drawable/bgalt" /> <item android:drawable="@drawable/bgnorm" /> </selector> 

    bgalt e bgnorm sono immagini PNG in disegni.

    Se si creano i pulsanti in modo programmato nell'attività, è ansible impostare lo background con:

     final Button b = new Button (MyClass.this); b.setBackgroundDrawable(getResources().getDrawable(R.drawable.whatever)); 

    Se si imposta lo stile dei pulsanti con un XML, si farebbe qualcosa di simile:

     <Button android:id="@+id/mybutton" android:background="@drawable/watever" /> 

    E infine un link a un tutorial . Spero che questo ti aiuti.

    Salvare questo codice nella cartella disegnabile con "bg_button.xml" e call "@ drawable / bg_button" come background del button nel tuo xml:

     <?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="#004F81" /> <stroke android:width="1dp" android:color="#222222" /> <corners android:radius="7dp" /> <padding android:left="10dp" android:top="10dp" android:right="10dp" android:bottom="10dp" /> </shape> </item> <item> <shape> <gradient android:startColor="#89cbee" android:endColor="#004F81" android:angle="270" /> <stroke android:width="1dp" android:color="#4aa5d4" /> <corners android:radius="7dp" /> <padding android:left="10dp" android:top="10dp" android:right="10dp" android:bottom="10dp" /> </shape> </item> </selector> 

    Fare riferimento a questo,

     boolean check = false; Button backward_img; Button backward_img1; backward_img = (Button) findViewById(R.id.bars_footer_backward); backward_img1 = (Button) findViewById(R.id.bars_footer_backward1); backward_img.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { check = true; backward_img.setBackgroundColor(Color.BLUE); } }); if (check == true) { backward_img1.setBackgroundColor(Color.RED); backward_img.setBackgroundColor(Color.BLUE); } 

    Prova questo

      final Button button = (Button) findViewById(R.id.button_id); button.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View view, MotionEvent event) { if(event.getAction() == MotionEvent.ACTION_UP) { button.setBackgroundColor(Color.RED); } else if(event.getAction() == MotionEvent.ACTION_DOWN) { button.setBackgroundColor(Color.BLUE); } return false; } }); 

    Se si desidera modificare l'image backgorund o il colore del button quando viene premuto, basta copiare questo codice e incollare il progetto nella posizione esatta descritta di seguito.

      <!-- Create new xml file like mybtn_layout.xml file in drawable --> <?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/pressed" /> <!--pressed --> <item android:drawable="@drawable/normal" /> <!-- Normal --> </selector> <!-- Now this file should be in a drawable folder and use this single line code in button code to get all the properties of this xml file --> <Button android:id="@+id/street_btn" android:layout_width="wrap_content" android:background="@drawable/layout_a" > <!-- your required code --> </Button> 

    Prova questo……

    Innanzitutto creare un file xml denominato button_pressed.xml Questi sono i contenuti.

     <?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/icon_1" /> <item android:state_focused="true" android:state_pressed="true" android:drawable="@drawable/icon_1_press" /> <item android:state_focused="false" android:state_pressed="true" android:drawable="@drawable/icon_1_press" /> <item android:drawable="@drawable/icon_1" /> </selector> 

    Noi provare questo sul tuo button.

     int imgID = getResources().getIdentifier("button_pressed", "drawable", getApplication().getPackageName()); button.setImageResource(imgID); 

    button_pressed.xml dovrebbe essere nella cartella disegnabile. icon_1_press e icon_1 sono due immagini per la pressione del button e la messa a fuoco normale.

     <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <!-- default --> <item android:state_pressed="false" android:state_focused="false"> <shape android:innerRadiusRatio="1" android:shape="rectangle" > <solid android:color="#00a3e2" /> <padding android:bottom="10dp" android:left="10dp" android:right="10dp" android:top="10dp" /> </shape> </item> <!-- button focused --> <item android:state_pressed="false" android:state_focused="true"> <shape android:innerRadiusRatio="1" android:shape="rectangle" > <solid android:color="#5a97f5" /> <padding android:bottom="5dp" android:left="10dp" android:right="10dp" android:top="5dp" /> </shape></item> <!-- button pressed --> <item android:state_pressed="true" android:state_focused="false"> <shape android:innerRadiusRatio="1" android:shape="rectangle" > <solid android:color="#478df9"/> <padding android:bottom="10dp" android:left="10dp" android:right="10dp" android:top="10dp" /> </shape></item> </selector> 

    Io uso questo codice (con effetto ripple):

     <ripple xmlns:android="http://schemas.android.com/apk/res/android" android:color="@color/color_gray"> <item android:id="@android:id/mask"> <color android:color="@color/color_gray" /> </item></ripple> 

    puoi provare questo codice per risolvere il tuo problema

     <?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/login_selected" /> <!-- pressed --> <item android:state_focused="true" android:drawable="@drawable/login_mouse_over" /> <!-- focused --> <item android:drawable="@drawable/login" /> <!-- default --> </selector> 

    scrivere questo codice nel tuo disegno creare una nuova risorsa e denominarlo quello che vuoi e poi scrivere il nome di questo drwable nel button stesso che facciamo riferimento all'image src in android

    Per gestire correttamente per quanto tempo desideri che il tuo button rimanga nell'altro colore, consiglio questa versione:

     button.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { switch(event.getAction()) { case MotionEvent.ACTION_DOWN: button.setBackground(getResources().getDrawable(R.drawable.on_click_drawable)); break; case MotionEvent.ACTION_UP: new java.util.Timer().schedule( new java.util.TimerTask() { @Override public void run() { ((Activity) (getContext())).runOnUiThread(new Runnable() { @Override public void run() { button.setBackground(getResources().getDrawable(R.drawable.not_clicked_drawable)); } }); } }, BUTTON_CLICK_TIME_AFTER_RELEASE_ANIMATION); break; default: } return false; } }); 

    BUTTON_CLICK_TIME_AFTER_RELEASE_ANIMATION indica dopo quanto tempo [ms] il button verrà ripristinato allo stato precedente (tuttavia si potrebbe desiderare di utilizzare alcuni booleani per verificare che il button non fosse stato utilizzato tra di loro, a seconda di ciò che si desidera get …) .

    hai il modo più semplice è questo:

    aggiungi questo codice a mainactivity.java

     public void start(View view) { stop.setBackgroundResource(R.color.red); start.setBackgroundResource(R.color.yellow); } public void stop(View view) { stop.setBackgroundResource(R.color.yellow); start.setBackgroundResource(R.color.red); } 

    e poi nella tua attività principale

      <button android:id="@+id/start" android:layout_height="wrap_content" android:layout_width="wrap_content" android:onclick="start" android:text="Click"> </button><button android:id="@+id/stop" android:layout_height="wrap_content" android:layout_width="wrap_content" android:onclick="stop" android:text="Click"> 

    o seguire questo tutorial

    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.