আপনি আপনার অ্যাপে একটি টেক্সট ফিল্ডে একটি ফোন নম্বর স্বয়ংক্রিয়ভাবে ফর্ম্যাট করতে পারেন, ব্যবহারকারীদের ফোন নম্বর ফরম্যাট করার মাধ্যমে তাদের সময় বাঁচানো যায়। একটি ফোন নম্বর স্বয়ংক্রিয়ভাবে ফর্ম্যাট করতে এই নির্দেশিকা অনুসরণ করুন:
- পাঠ্য ক্ষেত্র তৈরি করুন।
- পাঠ্য ক্ষেত্রে একটি সংখ্যা স্বয়ংক্রিয় ফর্ম্যাট করুন।
সংস্করণ সামঞ্জস্য
এই বাস্তবায়নের জন্য আপনার প্রজেক্ট minSDK এপিআই লেভেল 21 বা তার উপরে সেট করা প্রয়োজন।
নির্ভরতা
পাঠ্য ক্ষেত্র তৈরি করুন
প্রথমে, TextField
কনফিগার করুন। এই উদাহরণটি নর্থ আমেরিকান নম্বরিং প্ল্যান (NANP) অনুযায়ী ফর্ম্যাট করা একটি ফোন নম্বর দেখায়। NanpVisualTransformation
NANP-তে সংখ্যার একটি কাঁচা স্ট্রিং ফর্ম্যাট করে, যেমন। 1234567890 থেকে (123) 456-7890।
@Composable fun PhoneNumber() { var phoneNumber by rememberSaveable { mutableStateOf("") } val numericRegex = Regex("[^0-9]") TextField( value = phoneNumber, onValueChange = { // Remove non-numeric characters. val stripped = numericRegex.replace(it, "") phoneNumber = if (stripped.length >= 10) { stripped.substring(0..9) } else { stripped } }, label = { Text("Enter Phone Number") }, visualTransformation = NanpVisualTransformation(), keyboardOptions = KeyboardOptions(keyboardType = KeyboardType.Number) ) }
কোড সম্পর্কে মূল পয়েন্ট
- একটি
TextField
কম্পোজযোগ্য যেখানেonValueChange
সমস্ত অ-সংখ্যাসূচক অক্ষরগুলি সরাতে একটি নিয়মিত অভিব্যক্তি ব্যবহার করে এবংphoneNumber
স্থিতি আপডেট করার আগে সর্বাধিক 10 অক্ষরের দৈর্ঘ্য সীমাবদ্ধ করে৷ -
TextField
visualTransformation
অ্যাট্রিবিউটে একটি কাস্টমVisualTransformation
ইনস্ট্যান্স সেট করা আছে।NanpVisualTransformation
, কাস্টম ক্লাস এখানে ইনস্ট্যান্টিয়েট করা হয়েছে, নিম্নলিখিত বিভাগে সংজ্ঞায়িত করা হয়েছে।
পাঠ্য ক্ষেত্রে একটি সংখ্যা স্বয়ংক্রিয় ফর্ম্যাট করুন
সংখ্যার একটি কাঁচা স্ট্রিং ফর্ম্যাট করতে, কাস্টম NanpVisualTransformation
ক্লাসের বাস্তবায়ন ব্যবহার করুন:
class NanpVisualTransformation : VisualTransformation { override fun filter(text: AnnotatedString): TransformedText { val trimmed = if (text.text.length >= 10) text.text.substring(0..9) else text.text var out = if (trimmed.isNotEmpty()) "(" else "" for (i in trimmed.indices) { if (i == 3) out += ") " if (i == 6) out += "-" out += trimmed[i] } return TransformedText(AnnotatedString(out), phoneNumberOffsetTranslator) } private val phoneNumberOffsetTranslator = object : OffsetMapping { override fun originalToTransformed(offset: Int): Int = when (offset) { 0 -> offset // Add 1 for opening parenthesis. in 1..3 -> offset + 1 // Add 3 for both parentheses and a space. in 4..6 -> offset + 3 // Add 4 for both parentheses, space, and hyphen. else -> offset + 4 } override fun transformedToOriginal(offset: Int): Int = when (offset) { 0 -> offset // Subtract 1 for opening parenthesis. in 1..5 -> offset - 1 // Subtract 3 for both parentheses and a space. in 6..10 -> offset - 3 // Subtract 4 for both parentheses, space, and hyphen. else -> offset - 4 } } }
কোড সম্পর্কে মূল পয়েন্ট
-
filter()
ফাংশন উপযুক্ত স্থানে অ-সংখ্যাসূচক বিন্যাস অক্ষর সন্নিবেশ করায়। -
phoneNumberOffsetTranslator
অবজেক্টে দুটি পদ্ধতি রয়েছে। একটি আসল স্ট্রিং এবং ফর্ম্যাট করা একটির মধ্যে অফসেটগুলি ম্যাপ করে এবং অন্যটি বিপরীত ম্যাপিং করে। যখন ব্যবহারকারী পাঠ্য ক্ষেত্রে কার্সার অবস্থান পরিবর্তন করে তখন এই ম্যাপিংগুলি ফরম্যাটিং অক্ষরগুলি এড়িয়ে যেতে সক্ষম করে৷ - ফরম্যাট করা স্ট্রিং এবং
phoneNumberOffsetTranslator
একটিTransformedText
উদাহরণের জন্য আর্গুমেন্ট হিসাবে ব্যবহার করা হয় যাTextField
দ্বারা ফরম্যাটিং করার জন্য ফেরত দেওয়া হয় এবং ব্যবহার করা হয়।
ফলাফল
![পাঠ্য ক্ষেত্রে একটি স্বয়ংক্রিয় ফর্ম্যাট ফোন নম্বর৷](https://developer.android.com/static/quick-guides/content/nanp_formatter.gif?hl=bn)
এই নির্দেশিকা ধারণকারী সংগ্রহ
এই নির্দেশিকাটি এই কিউরেট করা কুইক গাইড সংগ্রহের অংশ যা বৃহত্তর অ্যান্ড্রয়েড উন্নয়ন লক্ষ্যগুলি কভার করে:
![](https://developer.android.com/static/images/quick-guides/collection-illustration.png?hl=bn)
পাঠ্য প্রদর্শন করুন
![](https://developer.android.com/static/images/quick-guides/collection-illustration.png?hl=bn)