Come modificare il comportamento ToggleButton con o senza xml in Android
-
27-09-2019 - |
Domanda
Ho fare un gioco di carte memo in Android per il mio progetto. Per quanto riguarda ora sono nella fase in cui cerco di capire la forma di base della mia app.
ho letto alcuni tutorial, ma posso; (. Cioè in 'per il' loop) t capire come modificare un sacco di pulsanti creati dinamicamente, da xml, o anche dal codice. Per rendere la mia domanda chiaro ecco il codice che ho fatto
package piotrek.test1;
import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.view.*;
import android.widget.*;
import java.util.ArrayList;
import java.util.*;
public class test1 extends Activity implements View.OnClickListener {
private ArrayList<Integer> listaKart = new ArrayList<Integer>();
private int rozmiar = 0;
private int licznik = 0;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
TworzKarty();
//tu tworzymy definicje nowego wygladu (layout) czyli w formie tabeli
TableLayout layout = new TableLayout (this);
layout.setLayoutParams( new TableLayout.LayoutParams(4,5) );
//ustawienie odstepow do 'scian'
layout.setPadding(10,10,10,10);
//petle 'populujace' miejsca w tabeli przyciskami
for (int f=0; f<=5; f++) {
TableRow tr = new TableRow(this);
for (int c=0; c<=4; c++) {
ToggleButton b = new ToggleButton (this);
//b.setText(""+f+c);
b.setText(Integer.toString(listaKart.get(licznik)));
b.setTextSize(10.0f);
b.setTextColor(Color.rgb( 100, 200, 200));
b.setOnClickListener(this);
tr.addView(b, 60,60);
licznik++;
} // for
layout.addView(tr);
} // for
super.setContentView(layout);
} // ()
public void TworzKarty(){
for (int i=0;i<=14;i++){
this.listaKart.add(i);
this.listaKart.add(i);
}
//pomieszanie kolejnosci numerków
Collections.shuffle(listaKart);
rozmiar=listaKart.size();
}
public void onClick(View view) {
//((Button) view).setText("*");
//((Button) view).setEnabled(false);
if (((ToggleButton) view).isChecked()) {
Toast.makeText(test1.this, Integer.toString(rozmiar), Toast.LENGTH_SHORT).show();
}
else {
Toast.makeText(test1.this, "Not checked", Toast.LENGTH_SHORT).show();
}
}
} // class
Cosa accade quando eseguire l'applicazione è che ho 30 ToggleButtons sullo schermo, ciascuna delle quali ha una forma numero da 0 a 14 (15 paia). Questo è quello che ho voluto avere, ma quando si preme uno di essi pulsanti oltre a mostrare i cambiamenti testo del pulsante brindisi formano quello che voglio che sia su ON e poi, dopo un'altra macchina da stampa su OFF. Io non riesco a capire come controllare questo comportamento - Vorrei davvero apprezzare alcuni suggerimenti su come raggiungere questo obiettivo rigorosamente in codice o utilizzando XML. Un altro caso è come utilizzare XML per definire come il layout e la casualità del set testo sui pulsanti.
Soluzione
Se si aggiunge
b.setTextOff(Integer.toString(listaKart.get(licznik)));
b.setTextOn(Integer.toString(listaKart.get(licznik)));
per il vostro anello interno per (), i pulsanti visualizzerà sempre la loro posizione nella lista, sia attivata o disattivata.