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

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

  • পাঠ্য ক্ষেত্র তৈরি করুন।
  • পাঠ্য ক্ষেত্রে একটি সংখ্যা স্বয়ংক্রিয় ফর্ম্যাট করুন।

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

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

ফলাফল

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

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

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

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

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

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