10. Андроид иловасида диалог ойналарини ҳосил қилиш Dialog fragmenti DialogFragment
Download 0.58 Mb. Pdf ko'rish
|
1-10
- Bu sahifa navigatsiya:
- RatingBar komponentini
- RatingBar komponenti wrap_content xususiyatiga
setMultiChoiceItems( ) usulidagi birinchi parametr belgilash kataklari boʻlgan roʻyxat uchun
qiymatlar massivi, ikkinchi parametr dialog oynasi chaqirilganda standart roʻyxat belgilash katakchalari holatining mantiqiy massividir. Misol uchun, biz ro'yxatning ikkinchi elementi tekshirilishini va qolgan elementlarning belgisiz qoldirishini xohlaymiz. Bunday holda, biz mantiqiy qiymatlar qatoridan foydalanamiz: final boolean[ ] checkedItemsArray = {noto'g'ri, rost, noto'g'ri}; Radio tugmalari bilan oldingi holatda bo'lgani kabi, tasdiqlash qutisi dialog oynasi uchun oynani yopish uchun tugmalardan foydalanishingiz kerak. 20 Oynani avtomatik yopish Tost xabaridan farqli o'laroq , dialog oynalari o'zlarini yopib qo'ymaydi, lekin foydalanuvchining javobini kutadi. Ammo agar biz taymerdan foydalansak, bu cheklovni chetlab o'tishimiz mumkin. Loyihaga o'z-o'zidan yopiladigan dialog oynasini chaqirish uchun tugma qo'shamiz va tugmani bosish ishlov beruvchisi kodini yozamiz (fragmentdan foydalanmasdan eski misol): public void onClick(View v) { AlertDialog.Builder quruvchisi = yangi AlertDialog.Builder(v.getContext()); builder.setTitle ("Avtomatik yopish oynasi"); builder.setMessage ("Ushbu oyna besh soniyadan keyin avtomatik ravishda yopiladi!"); builder.setCancelable(to'g'ri); final AlertDialog dlg = builder.create(); dlg.show(); yakuniy taymer taymer = yangi taymer(); timer.schedule(yangi TimerTask() { public void run() { dlg.dississ(); // agar vazifa faol bo'lsa, dialog oynasini yoping timer.cancel(); // shuningdek, taymer chizig'ini yuqoriga ko'taring, aks holda, // siz xato haqida hisobot olishingiz mumkin } }, 5000); // 5 soniyadan so'ng (5000 millisekund ) vazifa faol bo'ladi. } 21 Reytingli AlertDialog (muammo misoli) Bir marta men tarmoqda RatingBar komponentini dialog oynasiga kiritish misoliga duch keldim. Sinov paytida men kod juda to'g'ri ishlamayotganini aniqladim. Sozlamalardan qat'i nazar, har doim ekranda oltita yulduz ko'rsatiladi. Va agar siz dasturni landshaft rejimiga kengaytirsangiz, ekran o'lchamiga qarab etti yulduz yoki undan ko'p ko'rsatiladi. Men esdalik sifatida misol qoldirdim, agar kimdir bu erda muammo nima ekanligini tushunsa, menga xabar bering. Bu ham fragmentdan foydalanmasdan eski misol. umumiy TextView txtView; public void onCreate (to'plam savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); txtView = findViewById(R.id.textView1); } public void onClick(View v) { showRatingDialog(); } public void showRatingDialog() { final AlertDialog.Builder reyting dialogi = yangi AlertDialog.Builder(bu); yakuniy RatingBar reytingi = yangi RatingBar(bu); ratingdialog.setIcon(android.R.drawable.btn_star_big_on); ratingdialog.setTitle ("Sevimli mushukingiz uchun ovoz bering!"); ratingdialog.setView(reyting); rating.setMax(5); rating.setNumStars(5); rating.setStepSize((float) 1.0); ratingdialog.setPositiveButton (" Bajarildi ", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, qaysi) { txtView.setText(String.valueOf(rating.getRating())); dialog.dississ(); } }) .setNegativeButton (“ Bekor qilish ”, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { dialog.cancel(); } }); 22 ratingdialog.create(); ratingdialog.show(); } Muammolarni bartaraf etish O'quvchilar muammoni hal qilishning bir qancha usullarini taklif qilishdi. Hujjatlar taklif qilganidek, RatingBar komponenti wrap_content xususiyatiga ega bo'lgan tartibda joylashtirilishi kerak . Keling, quyidagi tarzda davom etaylik. Keling, RatingBar bilan alohida belgi yarataylik , biz uni dialog oynasiga biriktiramiz. Shunday qilib , belgilash : res/layout/ratingdialog.xml android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertikal" android:padding="2dip" > android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:layout_marginBottom="10dp" android:layout_marginTop="10dp" android: bosiladigan = "haqiqat" android:isIndicator="noto'g'ri" android:numStars="3" android:reyting="2" android: stepSize="1.0" /> 23 Hozir tahrirlangan kod : public void showRatingDialog() { final AlertDialog.Builder reyting dialogi = yangi AlertDialog.Builder(bu); ratingdialog.setIcon(android.R.drawable.btn_star_big_on); ratingdialog.setTitle ("Sevimli mushukingiz uchun ovoz bering!"); Linearlayoutni ko'rish = getLayoutInflater().inflate(R.layout.ratingdialog, null); ratingdialog.setView (chiziqli tartib); yakuniy RatingBar reytingi = (RatingBar)linearlayout.findViewById(R.id.ratingbar); ratingdialog.setPositiveButton (" Bajarildi ", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, qaysi) { txtView.setText(String.valueOf(rating.getRating())); dialog.dississ(); } }) .setNegativeButton (“ Bekor qilish ”, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { dialog.cancel(); } }); ratingdialog.create(); ratingdialog.show(); } 24 Esda tutingki, RatingBar xususiyatlariga kirish uchun biz odatda onCreate( ) usulida sinf nomini tashlab qo'ysak , Activity.findViewById() emas, balki View.findViewById () usulini Download 0.58 Mb. Do'stlaringiz bilan baham: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling