ফোকাস ট্র্যাভার্সাল অর্ডার

ব্যবহারকারীরা ট্যাব কী অথবা ডিরেকশনাল (অ্যারো / ডি-প্যাড) কী ব্যবহার করে UI এলিমেন্টগুলোর মধ্যে কীবোর্ড ফোকাস সরাতে পারেন:

  • Tab / Shift+Tab : এক-মাত্রিক উপস্থিতির ক্রমে ফোকাসকে সামনে বা পিছনে সরান।
  • দিকনির্দেশক কী: ফোকাসকে দ্বিমাত্রিকভাবে সরান ( উপরে , নিচে , বামে এবং ডানে )।

একমাত্রিক ফোকাস ট্র্যাভার্সাল

একমাত্রিক ফোকাস ট্র্যাভার্সালে, ট্যাব কী স্ক্রিনে প্রদর্শনের ক্রম অনুসারে UI-এর মধ্যে ফোকাসকে অগ্রসর করে।

উদাহরণস্বরূপ, যখন চারটি বোতাম সারিতে সাজানো থাকে:

Column {
    Row {
        Button(onClick = { /* ... */ }) { Text("1st") }
        Button(onClick = { /* ... */ }) { Text("2nd") }
    }
    Row {
        Button(onClick = { /* ... */ }) { Text("3rd") }
        Button(onClick = { /* ... */ }) { Text("4th") }
    }
}

ট্যাব কী চাপলে ফোকাস ক্রমানুসারে নিম্নলিখিত ক্রমে বাটনগুলোতে স্থানান্তরিত হয়:

  1. ১ম বোতাম (উপরের-শুরু)
  2. ২য় বোতাম (উপরের দিকে)
  3. তৃতীয় বাটন (নিচের-শুরু)
  4. চতুর্থ বোতাম (নীচের দিকে)

শেষ এলিমেন্টটিতে ট্যাব চাপলে ফোকাস আবার প্রথম ফোকাস টার্গেটে ফিরে আসে। Shift+Tab চাপলে ফোকাস বিপরীত ক্রমে সরে যায়।

দ্বিমাত্রিক ফোকাস ট্র্যাভার্সাল

কিবোর্ডের অ্যারো কী চাপলে বা ডি-প্যাড ব্যবহার করলে দ্বি-মাত্রিক ফোকাস ট্র্যাভার্সাল চালু হয়।

দ্বিমাত্রিক ট্রাভার্সালের ক্ষেত্রে, সিস্টেমটি অনুরোধকৃত দিকে সবচেয়ে কাছের লক্ষ্যবস্তু নির্ধারণ করতে UI এলিমেন্টগুলোর জ্যামিতিক স্থানাঙ্ক এবং স্থানিক সীমানা পরীক্ষা করে।

দ্বিমাত্রিক ফোকাস ট্র্যাভার্সাল এক স্থান থেকে অন্য স্থানে ফিরে আসে না । যদি ব্যবহারকারী একেবারে নিচের এলিমেন্টে ফোকাস থাকা অবস্থায় ডাউন কী চাপেন, তাহলে ফোকাস স্ক্রিনের উপরে চলে না গিয়ে সেই এলিমেন্টেই থেকে যায়।

পয়েন্টার ক্লিকের মাধ্যমে ফোকাস ট্র্যাভার্সাল রিসেট করুন

ডেস্কটপ বা বড় স্ক্রিনের ডিভাইসে ফিজিক্যাল কীবোর্ড এবং মাউস বা টাচপ্যাডের মধ্যে পরিবর্তন করার সময়:

  • ট্যাপ বা ক্লিকের মাধ্যমে ফোকাস অপসারণ : মাউস বা টাচপ্যাড দিয়ে কোনো অ-ইন্টারেক্টিভ স্থানে ক্লিক বা ট্যাপ করলে সক্রিয় এলিমেন্ট থেকে ফোকাস সরে যায়।
  • ট্র্যাভার্সাল পুনরায় শুরু করুন : ফোকাস সরে যাওয়ার পর, পরবর্তী ট্যাব কী চাপলে এক-মাত্রিক ট্র্যাভার্সাল পূর্ববর্তী সক্রিয় এলিমেন্ট থেকে পুনরায় শুরু না হয়ে, ভিজ্যুয়াল উপস্থিতির ক্রমানুসারে প্রথম ফোকাস টার্গেট থেকে পুনরায় শুরু হয়। এটি দ্বি-মাত্রিক ফোকাস ট্র্যাভার্সালের মতোই। ডিরেকশনাল কীগুলো কীবোর্ড ফোকাসকে অনুরোধ করা দিকের সবচেয়ে কাছের ফোকাস টার্গেটে নিয়ে যায়।

প্রোগ্রামের মাধ্যমে ফোকাস পরিষ্কার করার বিস্তারিত তথ্যের জন্য, “Move and clear focus” দেখুন।

ফোকাস ট্র্যাভার্সাল ক্রম কাস্টমাইজ করুন

আপনি focusProperties মডিফায়ার ব্যবহার করে ট্রাভার্সাল আচরণ কাস্টমাইজ করতে পারেন।

একমাত্রিক ট্রাভার্সাল অর্ডার কাস্টমাইজ করুন

একমাত্রিক ট্রাভার্সালকে অগ্রাহ্য করতে, একটি FocusRequester সাথে next বা previous প্রপার্টিটি নির্দিষ্ট করুন:

  1. remember { FocusRequester() } করে একটি FocusRequester অবজেক্ট তৈরি করুন।
  2. focusRequester মডিফায়ার ব্যবহার করে FocusRequester টার্গেট কম্পোজেবলের সাথে সংযুক্ত করুন।
  3. সোর্স কম্পোজেবলে focusProperties মডিফায়ারটি প্রয়োগ করুন এবং FocusRequester next ( Tab- এর জন্য) অথবা previous ( Shift+Tab- এর জন্য) হিসেবে নির্ধারণ করুন।

val (first, second, third) = remember { FocusRequester.createRefs() }

Column {
    Button(
        onClick = { /* ... */ },
        modifier = Modifier
            .focusRequester(first)
            .focusProperties { next = third }
    ) {
        Text("First (Tab jumps to Third)")
    }
    Button(
        onClick = { /* ... */ },
        modifier = Modifier.focusRequester(second)
    ) {
        Text("Second")
    }
    Button(
        onClick = { /* ... */ },
        modifier = Modifier.focusRequester(third)
    ) {
        Text("Third")
    }
}

দ্বিমাত্রিক ভ্রমণের ক্রম কাস্টমাইজ করুন

একইভাবে, আপনি focusProperties মধ্যে up , down , start , end , left , বা right এ FocusRequester ইনস্ট্যান্স অ্যাসাইন করার মাধ্যমে দ্বি-মাত্রিক ফোকাস ট্র্যাভার্সাল ওভাররাইড করতে পারেন:

val (topButton, bottomButton) = remember { FocusRequester.createRefs() }

Button(
    onClick = { /* ... */ },
    modifier = Modifier
        .focusRequester(topButton)
        .focusProperties {
            down = bottomButton
            right = bottomButton
        }
) {
    Text("Top button")
}
Button(
    onClick = { /* ... */ },
    modifier = Modifier.focusRequester(bottomButton)
) {
    Text("Bottom button")
}

একটি নির্দিষ্ট দিকে (যেমন, লেআউটের সীমানায়) ফোকাস নেভিগেশন ব্লক করতে, সেই প্রপার্টিতে FocusRequester.Cancel অ্যাসাইন করুন (উদাহরণস্বরূপ, down = FocusRequester.Cancel )। কোনো নির্দিষ্ট দিকের জন্য সিস্টেমের ডিফল্ট ট্র্যাভার্সাল অ্যালগরিদম স্পষ্টভাবে বজায় রাখতে, FocusRequester.Default অ্যাসাইন করুন।

{% হুবহু %} {% endverbatim %} {% হুবহু %} {% endverbatim %}