كيفية تعديل سلوك ToggleButton مع أو بدون XML في Android
-
27-09-2019 - |
سؤال
يجب أن أقوم بعمل لعبة بطاقة مذكرات في Android لمشروعي. حتى الآن أنا في المرحلة التي أحاول فيها معرفة الشكل الأساسي لتطبيقي.
لقد قرأت بعض البرامج التعليمية ، لكنني لا أستطيع أن أتعرف على كيفية تعديل الكثير من الأزرار التي تم إنشاؤها ديناميكيًا (أي. في حلقة ") ، من XML ، أو حتى من الكود. لتوضيح سؤالي ، هذا هو الرمز الذي صنعته
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
ما يحدث عندما أقوم بتشغيل التطبيق ، أن لدي 30 ToggleButtons على الشاشة ، لكل منهم نموذج من 0 إلى 14 (15 زوجًا). هذا ما أردت أن أحصل عليه ، لكن عندما أضغط على أي أزرار من أزرارها إلى جانب عرض نص زر الخبز المحمص ، يشكل ما أريد أن يكون عليه ، ثم بعد الضغط على أخرى. لا يمكنني معرفة كيفية التحكم في هذا السلوك - سأقدر حقًا بعض النصائح حول كيفية تحقيق ذلك بدقة في التعليمات البرمجية أو استخدام XML. هناك حالة أخرى هي كيفية استخدام XML لتحديد هذا التصميم والعشوائية للنص المحدد على الأزرار.
المحلول
اذا اضفت
b.setTextOff(Integer.toString(listaKart.get(licznik)));
b.setTextOn(Integer.toString(listaKart.get(licznik)));
إلى الداخلية الخاصة بك من أجل () حلقة () ، ستعرض الأزرار دائمًا موضعها في القائمة ، سواء تم تبديلها أو إيقافها.