سلام
برای تمرینی که گفتید میخوام برای بخش ادیت تکست که شماره باید وارد کرد عدد "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'
ممنون آقای موحد
فکر نمیکردم یه حرکت ساده انقدر کد احتیاج داشته باشه خیلی پیچیده شد، همین کدها نیاز به یک جلسه آموزشی دارن فکر کنم