2017-06-29 3 views
-2

Lassen Sie mich die Frage klären. Ich habe 4 Image Buttons, ich möchte das Symbol des gedrückten ändern und dann, wenn ich einen anderen Button drücke, so dass der nächste geändert werden sollte und der letzte zurück zu seinem vorherigen Symbol.Wie Symbol des gedrückten ImageButton dynamisch in Android ändern?

Hinweis: Das Beispiel ist Instagram. Wenn Sie auf ein graues Symbol klicken, wird es schwarz. Und wenn Sie auf einen anderen klicken, wird der letzte grau und der neue wird schwarz.

+2

Verwenden Sie unterschiedliche Drawables für verschiedene Zustände der Schaltfläche. – SripadRaj

+0

@SripadRaj Ich bin neu in Android-Programmierung können Sie mir ein Beispiel geben? :) – Amin

+0

Können Sie nach dieser Lösung suchen? Https: //stackoverflow.com/questions/32534076/what-ist-the-best-way-to-do-a-button-group-that-can-be-selected- and-activate-inde – ViramP

Antwort

1

Sie können eine XML-Datei in ziehbar Ordner für das Erstellen, den Code unten verwenden und dass ziehbar als Bild verwenden:

<?xml version="1.0" encoding="utf-8"?> 
    <selector xmlns:android="http://schemas.android.com/apk/res/android"> 
     <item android:drawable="@drawable/button_pressed_yellow" 
       android:state_pressed="true" /> 
     <item android:drawable="@drawable/button_focused_orange" 
       android:state_focused="true" /> 
     <item android:drawable="@drawable/button_normal_green" /> 
     <item android:drawable="@drawable/selected_icon" android:state_selected="true"/> 

    </selector> 

und anderes Bild verwenden, auf der Presse Zustand abhängig.

+0

Dieser Code ändert nur die Symbolfarbe, wenn Sie ihn wie eine halbe Sekunde drücken. Wie behalte ich die gepresste Farbe, bis ich ein anderes Symbol drücke? wie das Instagram. – Amin

+0

In einer weiteren Zustand, in dem obigen Code: und iv.setSelected (true) nennen; für die ausgewählte Schaltfläche und iv.setSelected (false); für nicht ausgewählte Schaltfläche. Es wird funktionieren. –

+0

Ich habe den Status ausgewählt und es funktioniert immer noch nicht. – Amin

1
public class CamTestActivity extends Activity implements View.OnClickListener{ 

    Button b1,b2,b3,b4; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     b1 = (Button)findViewById(R.id.btn1); 
     b2 = (Button)findViewById(R.id.btn2); 
     b3 = (Button)findViewById(R.id.btn3); 
     b4 = (Button)findViewById(R.id.btn4); 

     b1.setOnClickListener(this); 
     b2.setOnClickListener(this); 
     b3.setOnClickListener(this); 
     b4.setOnClickListener(this); 
    } 

    @Override 
    public void onClick(View v) { 

     int id = v.getId(); 
     switch (id){ 

      case R.id.btn1: 
       pressbtn1(); 
       break; 

      case R.id.btn2: 
       pressbtn2(); 
       break; 

      case R.id.btn3: 
       pressbtn3(); 
       break; 

      case R.id.btn4: 
       pressbtn4(); 
       break; 
     } 

    } 

    private void pressbtn4() { 
     b1.setBackgroundColor(getResources().getColor(R.color.color_gray)); 
     b2.setBackgroundColor(getResources().getColor(R.color.color_gray)); 
     b3.setBackgroundColor(getResources().getColor(R.color.color_gray)); 
     b4.setBackgroundColor(getResources().getColor(R.color.color_black)); 
    } 

    private void pressbtn3() { 
     b1.setBackgroundColor(getResources().getColor(R.color.color_gray)); 
     b2.setBackgroundColor(getResources().getColor(R.color.color_gray)); 
     b3.setBackgroundColor(getResources().getColor(R.color.color_black)); 
     b4.setBackgroundColor(getResources().getColor(R.color.color_gray)); 
    } 

    private void pressbtn2() { 
     b1.setBackgroundColor(getResources().getColor(R.color.color_gray)); 
     b2.setBackgroundColor(getResources().getColor(R.color.color_black)); 
     b3.setBackgroundColor(getResources().getColor(R.color.color_gray)); 
     b4.setBackgroundColor(getResources().getColor(R.color.color_gray)); 
    } 

    private void pressbtn1() { 
     b1.setBackgroundColor(getResources().getColor(R.color.color_black)); 
     b2.setBackgroundColor(getResources().getColor(R.color.color_gray)); 
     b3.setBackgroundColor(getResources().getColor(R.color.color_gray)); 
     b4.setBackgroundColor(getResources().getColor(R.color.color_gray)); 
    } 
} 
+0

Ich möchte die Hintergrundfarbe nicht ändern.Ich möchte das Icon komplett ändern.Es gibt 2 Symbole für jede Taste 1 ist grau und 1 ist schwarz Ich möchte das Symbol 1 in Schwarz ändern, wenn es angeklickt wurde (das Restgrau) und das Symbol 2 in Schwarz (der Rest Grau) usw. – Amin

+0

WIE ich die Farbe geändert habe .. Sie können auch das Symbol ändern Wie b1.setBackgroundColor (getResources(). getColor (R.color.color_gray)); –

1

Java-Code:

public void onAnyButtonCLick(View view) 
    { 

    for (int i = 0; i < parent_layout.getChildCount(); i++) { 
      View v = parent_layout.getChildAt(i); 
    // Check v is button 
    if(v instanceof Button) 
    { 

    // set all button with grey color background 
     v.setBackgroundColor(getResources().getColor(R.color.color_gray)); 

    } 

    } // loop ends 

    // color the current click button with black. 
    view.setBackgroundColor(getResources().getColor(R.color.color_black)); 


    } // end of click 

XML:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/parent_layout" 
    android:orientation="vertical" android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:weightSum="2"> 



    <Button 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="First Button" 

     android:onClick="button_click"/> 
    <Button 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Second Button" 
     android:onClick="button_click"/> 
    <Button 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Third Button" 
     android:onClick="button_click"/> 
    <Button 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Forth Button" 
     android:onClick="button_click"/> 

</LinearLayout> 


// Hope it Helps !! 
Verwandte Themen