আপনি আপনার অ্যাপের টেক্সট ফিল্ডে ফোন নম্বর স্বয়ংক্রিয়ভাবে ফরম্যাট করতে পারেন, যা ব্যবহারকারীদের সময় বাঁচায় কারণ তারা নম্বরটি ইনপুট করার সাথে সাথেই তা ফরম্যাট হয়ে যায়। ফোন নম্বর স্বয়ংক্রিয়ভাবে ফরম্যাট করতে এই নির্দেশিকা অনুসরণ করুন:
- টেক্সট ফিল্ডটি তৈরি করুন।
- টেক্সট ফিল্ডে একটি সংখ্যা স্বয়ংক্রিয়ভাবে ফরম্যাট করুন।
ফলাফল

সংস্করণ সামঞ্জস্যতা
এই বাস্তবায়নের জন্য আপনার প্রোজেক্টের minSDK অবশ্যই API লেভেল ২১ বা তার বেশি হতে হবে।
নির্ভরশীলতা
টেক্সট ফিল্ড তৈরি করুন
প্রথমে, 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স্টেট আপডেট করার আগে একটি রেগুলার এক্সপ্রেশন ব্যবহার করে সমস্ত অ-সংখ্যাসূচক অক্ষর মুছে ফেলে এবং এর দৈর্ঘ্য সর্বোচ্চ ১০টি অক্ষরে সীমাবদ্ধ রাখে। -
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দ্বারা ফরম্যাটিং সম্পাদনের জন্য ব্যবহৃত হয়।
যে সংগ্রহগুলিতে এই নির্দেশিকাটি রয়েছে
এই নির্দেশিকাটি বিশেষভাবে নির্বাচিত কুইক গাইড সংকলনগুলোর একটি অংশ, যা অ্যান্ড্রয়েড ডেভেলপমেন্টের বৃহত্তর লক্ষ্যগুলো পূরণ করে:

টেক্সট প্রদর্শন করুন
