कंपोज़िशन ट्री में फ़ोकस बदलने पर, Compose एक फ़ोकस इवेंट ट्रिगर करता है. पैरंट और चाइल्ड मॉडिफ़ायर, इस इवेंट को देख सकते हैं. फ़ोकस की स्थिति में होने वाले बदलावों को सुनने, फ़ोकस की मौजूदा प्रॉपर्टी के बारे में क्वेरी करने, और स्थिति के हिसाब से यूज़र इंटरफ़ेस (यूआई) को अपडेट करने के लिए, onFocusChanged मॉडिफ़ायर का इस्तेमाल किया जा सकता है.
onFocusChanged की मदद से फ़ोकस की स्थिति देखना
onFocusChanged मॉडिफ़ायर, FocusState ऑब्जेक्ट तब उपलब्ध कराता है, जब किसी एलिमेंट पर फ़ोकस किया जाता है या उससे फ़ोकस हटाया जाता है.
उदाहरण के लिए, कस्टम कॉम्पोनेंट की स्थिति को अपडेट करने के लिए, फ़ोकस में होने वाले बदलावों को मॉनिटर किया जा सकता है. जैसे, किसी एलिमेंट के बॉर्डर का रंग बदलना या ऐनिमेशन ट्रिगर करना:
var color by remember { mutableStateOf(Color.White) } Card( modifier = Modifier .onFocusChanged { color = if (it.isFocused) Red else White } .border(5.dp, color) ) {}
इस उदाहरण में, remember, फिर से कंपोज़ किए जाने पर बॉर्डर का रंग सेव करता है. साथ ही, जब भी एलिमेंट का फ़ोकस स्टेट ट्रांज़िशन होता है, तब बॉर्डर का रंग अपडेट होता है.
FocusState प्रॉपर्टी
onFocusChanged को पास किया गया FocusState ऑब्जेक्ट, तीन मुख्य प्रॉपर्टी उपलब्ध कराता है:
isFocused: अगर इस मॉडिफ़ायर से जुड़ा कंपोज़ेबल, फ़िलहाल ऐक्टिव इनपुट फ़ोकस में है, तोtrueदिखाता है.hasFocus: अगर फ़िलहाल इस कंपोज़ेबल या इसके किसी भी चाइल्ड कंपोज़ेबल में फ़ोकस है, तोtrueदिखाता है. यह उन पैरंट कंटेनर (जैसे कि कार्ड या टूलबार) के लिए काम का होता है जिन्हें यह जानने की ज़रूरत होती है कि उनके अंदर मौजूद कोई चाइल्ड कब चालू है.isCaptured: अगर फ़िलहाल फ़ोकस एलिमेंट पर लॉक है, तोtrueदिखाता है. उदाहरण के लिए,captureFocus()का इस्तेमाल करके मोडल सब-इंटरैक्शन के दौरान. कैप्चर किए जाने के दौरान, फ़ोकस को दूसरे एलिमेंट पर ले जाने की कोशिश करने से फ़ोकस नहीं हटता.
Modifier.onFocusChanged { focusState ->
val isFocused = focusState.isFocused
val hasFocus = focusState.hasFocus
val isCaptured = focusState.isCaptured
}
आपके लिए सुझाव
- ध्यान दें: JavaScript बंद होने पर लिंक का टेक्स्ट दिखता है
- फ़ोकस टारगेट
- फ़ोकस की स्थिति के बारे में बताना
- प्रोग्राम के हिसाब से फ़ोकस करने का अनुरोध करना
- फ़ोकस कैप्चर करना और रिलीज़ करना