একটি পাঠ্য ক্ষেত্রে একটি ফোন নম্বর স্বয়ংক্রিয় ফর্ম্যাট করুন৷

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

  • টেক্সট ফিল্ডটি তৈরি করুন।
  • টেক্সট ফিল্ডে একটি সংখ্যা স্বয়ংক্রিয়ভাবে ফরম্যাট করুন।

ফলাফল

টেক্সট ফিল্ডে একটি স্বয়ংক্রিয়ভাবে ফরম্যাট করা ফোন নম্বর
চিত্র ১. টেক্সট ফিল্ডে স্বয়ংক্রিয়ভাবে ফরম্যাট করা একটি ফোন নম্বর।

সংস্করণ সামঞ্জস্যতা

এই বাস্তবায়নের জন্য আপনার প্রোজেক্টের 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 দ্বারা ফরম্যাটিং সম্পাদনের জন্য ব্যবহৃত হয়।

যে সংগ্রহগুলিতে এই নির্দেশিকাটি রয়েছে

এই নির্দেশিকাটি বিশেষভাবে নির্বাচিত কুইক গাইড সংকলনগুলোর একটি অংশ, যা অ্যান্ড্রয়েড ডেভেলপমেন্টের বৃহত্তর লক্ষ্যগুলো পূরণ করে:

যেকোনো UI-এর একটি কেন্দ্রীয় অংশ হলো টেক্সট। আপনার অ্যাপে টেক্সট উপস্থাপনের বিভিন্ন উপায় জেনে নিন, যা ব্যবহারকারীকে একটি আনন্দদায়ক অভিজ্ঞতা দেবে।
টেক্সট লিখে এবং অন্যান্য ইনপুট পদ্ধতি ব্যবহার করে ব্যবহারকারীরা কীভাবে আপনার অ্যাপের সাথে ইন্টারঅ্যাক্ট করতে পারে, তা বাস্তবায়ন করার উপায়গুলো শিখুন।

কোনো প্রশ্ন বা মতামত থাকলে

আমাদের প্রায়শই জিজ্ঞাসিত প্রশ্নাবলী পেজে গিয়ে সংক্ষিপ্ত নির্দেশিকাগুলো সম্পর্কে জানুন অথবা আমাদের সাথে যোগাযোগ করে আপনার মতামত জানান।