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

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

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

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

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

ফলাফল

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

এই নির্দেশিকা ধারণকারী সংগ্রহগুলি

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

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

প্রশ্ন বা প্রতিক্রিয়া আছে

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