💻 آخرین فرصت یادگیری برنامه‌نویسی با آفر ویژه قبل از افزایش قیمت در ۵ آذر ماه (🎁 به همراه یک هدیه ارزشمند )
۰ ثانیه
۰ دقیقه
۰ ساعت
۲ محمدحسین موسی وند
تکست غیرقابل پاک شدن
محسن موحد حل شده توسط محسن موحد

سلام

برای تمرینی که گفتید میخوام برای بخش ادیت تکست که شماره باید وارد کرد عدد "090" رو بزارم که قابل پاک شدن نباشه

چیکار باید کنم؟

سلام،

به شکل زیر با استفاده از TextInputEditText میتونید عمل کنید.

کد لیوت:

<com.google.android.material.textfield.TextInputLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_margin="16dp">
    <com.google.android.material.textfield.TextInputEditText
        android:id="@+id/mobileNumberEditText"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:inputType="phone"
        android:hint="شماره موبایل" />
</com.google.android.material.textfield.TextInputLayout>

کد کاتلین:

import android.os.Bundle
import android.text.Editable
import android.text.TextWatcher
import androidx.appcompat.app.AppCompatActivity
import com.google.android.material.textfield.TextInputEditText
class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        val mobileNumberEditText = findViewById<TextInputEditText>(R.id.mobileNumberEditText)
        mobileNumberEditText.addTextChangedListener(object : TextWatcher {
            var isFormatting = false
            var lastText = ""
            override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {}
            override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {
                if (isFormatting) return
                if (s.toString().length < 2) {
                    isFormatting = true
                    mobileNumberEditText.setText("09")
                    mobileNumberEditText.setSelection(mobileNumberEditText.text.length)
                    isFormatting = false
                }
            }
            override fun afterTextChanged(s: Editable?) {
                if (!isFormatting) {
                    val text = s.toString()
                    if (text != lastText) {
                        lastText = text
                        if (!text.startsWith("09")) {
                            isFormatting = true
                            mobileNumberEditText.setText("09${text.filter { it.isDigit() }}")
                            mobileNumberEditText.setSelection(mobileNumberEditText.text.length)
                            isFormatting = false
                        }
                    }
                }
            }
        })
    }
}

این وابستگی رو اضافه کنید:

implementation 'com.google.android.material:material:1.4.0'

 

بهترین پاسخ
محسن موحد ۱۵ اسفند ۱۴۰۲، ۰۰:۴۴

ممنون آقای موحد

فکر نمیکردم یه حرکت ساده انقدر کد احتیاج داشته باشه خیلی پیچیده شد، همین کد‌ها نیاز به یک جلسه آموزشی دارن فکر کنم

محمدحسین موسی وند ۱۷ اسفند ۱۴۰۲، ۱۲:۴۹