focusGroup মডিফায়ার ব্যবহার করে আপনি একাধিক ফোকাস টার্গেট একসাথে গ্রুপ করতে পারবেন।
গ্রুপিংয়ের মাধ্যমে আপনি ফোকাস হায়ারার্কি ম্যানেজ করতে, লজিক্যাল UI অঞ্চল (যেমন
টুলবার, ডায়ালগ অ্যাকশন বা কার্ডের তালিকা) আলাদা করতে এবং ফোকাস কোনও অঞ্চলে প্রবেশ করলে বা
সেখান থেকে বেরিয়ে গেলে তা ইন্টারসেপ্ট করতে পারবেন।
ফোকাস গ্রুপ কনসেপ্ট: প্রবেশ করা, বেরিয়ে আসা এবং ডিফল্ট ট্রাভার্সাল
একটি ফোকাস গ্রুপ তার চাইল্ড ফোকাস টার্গেটের চারপাশে একটি সুসংহত নেভিগেশন সীমানা প্রতিষ্ঠা করে। এই সীমানা জুড়ে ফোকাস কীভাবে সরে যায় তা বোঝার জন্য দুটি মূল ধারণার উপর নির্ভর করে:
- Enter: ফোকাস গ্রুপের বাইরে থাকা কোনও এলিমেন্ট থেকে ফোকাস গ্রুপের মধ্যে থাকা কোনও এলিমেন্টে ফোকাস ট্রানজিশন হলে এই ইভেন্ট ঘটে।
- Exit: গ্রুপের শেষ ইন্টার্নাল এলিমেন্ট থেকে ফোকাস সরে গিয়ে এক্সটার্নাল ফোকাস টার্গেটে ট্রানজিশন হলে এই ইভেন্ট ঘটে।
ডিফল্ট ফোকাস ট্রাভার্সাল অ্যাকশন
ডিফল্ট হিসেবে, কোনও ফোকাস গ্রুপ বাইরে থেকে ফোকাস পেলে:
- গ্রুপে প্রবেশ করা: Compose অটোমেটিক একটি ইন্টার্নাল চাইল্ড ফোকাস টার্গেট বেছে নেয়। এক-মাত্রিক (ট্যাব) নেভিগেশনের জন্য, এটি ভিজ্যুয়াল অ্যাপিয়ারেন্সের ক্রম অনুযায়ী প্রথম চাইল্ড বেছে নেয়। দ্বিমাত্রিক (তীরচিহ্ন 'কী' বা ডি-প্যাড) নেভিগেশনের জন্য, এটি এমন চাইল্ড বেছে নেয় যা ইনকামিং ডিরেকশনের সবচেয়ে কাছাকাছি থাকে।
- গ্রুপের মধ্যে নেভিগেট করা: নেভিগেশন কী বারবার প্রেস করলে, গ্রুপের মধ্যে থাকা একই ধরনের ফোকাস টার্গেটের মধ্যে ফোকাস সরে যায়।
- গ্রুপ থেকে বেরিয়ে আসা: ব্যবহারকারী গ্রুপের মধ্যে শেষ ফোকাস টার্গেট পেরিয়ে গেলে, পরের বার 'কী' প্রেস করলে গ্রুপ থেকে বেরিয়ে এসে গ্রুপের বাইরে কাছাকাছি ফোকাস টার্গেটে ফোকাস চলে যায়।
ফোকাস এন্ট্রি রিডাইরেকশন কাস্টমাইজ করুন
অনেক UI ডিজাইনে, ডিফল্ট এন্ট্রি টার্গেট (যেমন, উপস্থিতির ক্রমে প্রথম চাইল্ড) ব্যবহারকারীর জন্য সবচেয়ে যুক্তিযুক্ত বা সুবিধাজনক পছন্দ নয়।
উদ্দেশ্য ও ব্যবহারিক ক্ষেত্র
কনফার্মেশন ডায়ালগের বাঁদিকে "বাতিল করুন" বোতাম এবং ডানদিকে প্রাইমারি "কনফার্ম করুন" বোতাম থাকলে ভালো হয়। ব্যবহারকারী ফর্ম ফিল্ড থেকে নিচের দিকে নেভিগেট করে বোতাম বারে গেলে:
- ডিফল্ট অ্যাকশন: ফোকাস "বাতিল করুন" বিকল্পে থাকবে কারণ এটি ভিজ্যুয়াল অ্যাপিয়ারেন্স অর্ডারের প্রথম বোতাম।
- উদ্দিষ্ট আচরণ: যেহেতু "কনফার্ম করুন" হল প্রাথমিক প্রস্তাবিত অ্যাকশন, তাই আপনি হয়ত ফোকাস অর্ডারের আগের থেকে বোতাম গ্রুপে প্রবেশ করার সময় সরাসরি "কনফার্ম করুন" বিকল্পে ফোকাস করতে চাইবেন, যদিও ব্যবহারকারীকে প্রয়োজন হলে "বাতিল করুন" বিকল্প বেছে নিতে বাঁদিকে প্রেস করার অনুমতি দেবেন।
অন্যান্য সাধারণ ব্যবহারের মধ্যে রয়েছে:
TabRow-এ প্রবেশ করার সময় বর্তমানে বেছে নেওয়া ট্যাবে সরাসরি ফোকাস সরানো হচ্ছে।- মিডিয়া প্লেব্যাক বারে প্রবেশ করার সময় ফোকাস সরাসরি "চালান / পজ করুন" কন্ট্রোলে সরানো হচ্ছে।
onEnter এবং FocusRequester-এর মাধ্যমে প্রয়োগ করা
ফোকাস গ্রুপে প্রবেশ করার পরে ফোকাস রিডাইরেক্ট করতে:
- সম্পর্কিত ফোকাস টার্গেট এনক্লোজ করে এমন পেরেন্ট কন্টেনারে
focusGroupমডিফায়ার প্রয়োগ করুন। - কন্টেনারে
focusPropertiesমডিফায়ার প্রয়োগ করুন, এবংonEnterকলব্যাক কনফিগার করুন। onEnterকলব্যাকে (FocusEnterExitScope-এ স্কোপ করা),focusRequesterব্যবহার করে পছন্দের ডিফল্ট চাইল্ডের সাথে সম্পর্কিতFocusRequester-এrequestFocus()কল করুন।
val defaultChildRequester = remember { FocusRequester() } Row( modifier = Modifier .focusGroup() .focusProperties { // Intercept entry into this group and redirect focus to the primary action onEnter = { defaultChildRequester.requestFocus() } } ) { Button(onClick = { /* Cancel action */ }) { Text("Cancel") } Button( onClick = { /* Confirm action */ }, modifier = Modifier.focusRequester(defaultChildRequester) ) { Text("Confirm (Default)") } }
onEnter এবং onExit-এর মধ্যে, আপনি cancelFocusChange()-কেও কল করতে পারেন যাতে
বাউন্ডারি জুড়ে ফোকাস ট্রানজিশন সম্পূর্ণভাবে ব্লক করা যায় অথবা
requestedFocusDirection-কে পরীক্ষা করা যায় যাতে ব্যবহারকারী ট্যাব, নিচে অথবা বাঁদিকে ব্যবহার করে
নেভিগেট করেছেন কিনা তার উপর ভিত্তি করে রাউটিং কাস্টমাইজ করা যায়।
স্ক্রল করা যায় এমন কন্টেনার ডিফল্ট হিসেবে ফোকাস গ্রুপ হয়
Jetpack Compose-এ, স্ক্রল করা যায় এমন কন্টেনার যেমন LazyRow, LazyColumn,
এবং LazyVerticalGrid অটোমেটিক ফোকাস গ্রুপ হিসেবে কাজ করে।
onEnter বা onExit কলব্যাক সেট করতে আপনাকে আলাদা করে
focusGroup মডিফায়ার প্রয়োগ করতে হবে না।
আপনার জন্য সাজেস্ট করা হয়েছে
- মনে রাখবেন: জাভাস্ক্রিপ্ট বন্ধ থাকলে লিঙ্ক টেক্সট দেখানো হয়
- ফোকাস টার্গেট
- ফোকাস ট্রাভার্সাল অর্ডার
- টেক্সট ফিল্ডে ফোকাস করুন
- ফোকাস ফিরিয়ে আনুন
- প্রোগ্রামাটিক্যালি ফোকাসের অনুরোধ করুন
- টেস্ট ফোকাস নেভিগেশন