Я создал плату 10x10 на TableLayout, заполненную облаком Java TextViews. Вскоре после этого я попытался разрешить всем 100 TextViews Clickable, но только TextView - последний столбец и последняя строка. Интересно, как получить доступ ко всем текстовым файлам.Как сделать TextView доступным?
EDIT: Поместите onClick внутри цикла, поэтому все текстовые элементы были доступны для кликов, однако только последний TextView меняет цвет, независимо от того, что было нажато. У кого-то было бы решение?
public class GameAct extends AppCompatActivity {
TableLayout tableLayout;
TableRow tableRow;
TextView textView;
Chronometer chronometer;
long tempoQuandoParado = 0;
boolean isClickPause = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_game);
chronometer = (Chronometer)findViewById(R.id.chronometer);
tableLayout = (TableLayout) findViewById(R.id.tabuleiro);
GradientDrawable gd = new GradientDrawable();
gd.setStroke(2, 0xFFFFFFFF);
gd.setColor(Color.rgb(0, 0, 128));
final GradientDrawable gradientDrawable = new GradientDrawable();
gradientDrawable.setStroke(2, 0xFFFFFFFF);
gradientDrawable.setColor(Color.RED);
tableLayout = (TableLayout) findViewById(R.id.tabuleiro);
for (int i = 0; i < 10; i++){
tableRow= new TableRow(this);
tableRow.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT, TableRow.LayoutParams.WRAP_CONTENT));
for (int j = 0; j < 10; j++) {
textView = new TextView(this);
textView.setBackgroundDrawable(gd);
textView.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT, TableRow.LayoutParams.WRAP_CONTENT));
textView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
textView.setBackgroundDrawable(gradientDrawable);
if (isClickPause) {
chronometer.setBase(SystemClock.elapsedRealtime() + tempoQuandoParado);
chronometer.start();
isClickPause = false;
} else {
chronometer.setBase(SystemClock.elapsedRealtime());
chronometer.start();
tempoQuandoParado = 0;
}
}
});
tableRow.addView(textView,35, 35);
}
tableLayout.addView(tableRow, new TableLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT));
}
}
}
Может быть, это поможет вам: http://blog.danlew.net/2015/12/14/making -edittexts-with-links-both-clickable-and-editable/ – piotrek1543
Поскольку вы устанавливаете прослушиватель кликов ** вне **, то петли –
@ FrankN.Stein являются правильными. Вы разместили слушателя в неправильном месте – piotrek1543