Mon but ici est que chaque fois qu'un bouton est cliqué, les couleurs d'arrière-plan Button
reviennent à leur couleur par défaut et le Button
sur lequel on clique change de couleur. J'espère faire cela dans JAVA
, je pense qu'une boucle for est la voie à suivre mais je ne suis pas sûr de savoir comment éditer Button
qui n'a pas été cliqué.Comment changer la couleur de fond d'un bouton qui n'a pas été cliqué?
Voici mon XML
<Button
android:id="@+id/but1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:focusableInTouchMode="true"
android:background="@drawable/background_selector"
android:onClick="buttonOn"
android:text="Button 1" />
<Button
android:id="@+id/but2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:focusableInTouchMode="true"
android:background="@drawable/background_selector"
android:onClick="buttonOn"
android:text="Button 2" />
<Button
android:id="@+id/but3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:focusableInTouchMode="true"
android:background="@drawable/background_selector"
android:onClick="buttonOn"
android:text="Button 3" />
Voici mon sélecteur
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/background_blue"
android:state_pressed="true"/>
<item android:drawable="@drawable/background_blue"
android:state_focused="true"/>
<item android:drawable="@drawable/background_white"/>
</selector>
Voici background_white
<solid android:color="@android:color/white" />
<padding
android:bottom="1dp"
android:left="1dp"
android:right="1dp"
android:top="1dp" />
</shape>
Voici background_blue
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="@android:color/holo_blue_bright" />
<padding
android:bottom="1dp"
android:left="1dp"
android:right="1dp"
android:top="1dp" />
</shape>
Voici mon code java
public class MainActivity extends AppCompatActivity {
Button but1;
Button but2;
Button but3;
Button but4;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
but1 = (Button) findViewById(R.id.but1);
but2 = (Button) findViewById(R.id.but2);
but3 = (Button) findViewById(R.id.but3);
but4 = (Button) findViewById(R.id.but4);
}
public void buttonOn(View v) {
Fragment view;
switch(v.getId()) {
case R.id.but1:
Log.i("Button 1", "pressed");
break;
case R.id.but2:
Log.i("Button 2", "pressed");
break;
case R.id.but3:
Log.i("Button 3", "pressed");
break;
case R.id.but4:
Log.i("Button 4", "pressed");
break;
}
}
Ce que vous obtenez en sortie du code ci-dessus? – Ankita
Vous pouvez sélectionner les boutons non cliqués par ID et définir l'arrière-plan. –
J'ai mis à jour mon code avec ce que je suis en train de travailler mais je suis préoccupé par le fait que la fonction de journalisation de JAVA nécessite deux clics de bouton pour l'impression du texte. Que puis-je faire pour imprimer le journal sur un seul clic? – morefaster