EditText-এ দশমিক সংখ্যা সীমাবদ্ধ করুন
এই টিউটোরিয়ালটি দেখাবে কিভাবে অ্যান্ড্রয়েড EditText-এ ব্যবহারকারী কতটুকু দশমিক স্থান লিখতে পারবে তা নিয়ন্ত্রণ করতে হয়। এটি ফিনান্সিয়াল বা বৈজ্ঞানিক অ্যাপ্লিকেশনের জন্য অত্যন্ত গুরুত্বপূর্ণ।
ধাপ ১: প্রজেক্ট তৈরি করুন
Android Studio-তে নতুন একটি প্রজেক্ট শুরু করুন।
ধাপ ২: লেআউট ফাইলে EditText যোগ করুন
res/layout/activity_main.xml এ নিচের কোডটি রাখুন:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="https://schemas.android.com/apk/res/android"
xmlns:tools="https://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<EditText
android:hint="Enter decimal numbers"
android:id="@+id/etText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:inputType="numberDecimal" />
</RelativeLayout>
ধাপ ৩: ইনপুট ফিল্টার ক্লাস তৈরি করুন
MainActivity.java ফাইলে নিচের কোডটি যোগ করুন। এখানে একটি কাস্টম InputFilter ব্যবহার করা হয়েছে যা দশমিকের আগে এবং পেছনে কত অঙ্ক থাকবে তা নিয়ন্ত্রণ করে:
package app.com.sample;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.text.InputFilter;
import android.text.Spanned;
import android.widget.EditText;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
EditText etText = findViewById(R.id.etText);
// ৫টি অঙ্ক দশমিকের আগে, ২টি দশমিকের পরে
etText.setFilters(new InputFilter[]{new DecimalDigitsInputFilter(5, 2)});
}
}
class DecimalDigitsInputFilter implements InputFilter {
private Pattern mPattern;
DecimalDigitsInputFilter(int digitsBeforeZero, int digitsAfterZero) {
mPattern = Pattern.compile("[0-9]{0," + (digitsBeforeZero - 1) + "}+((\\.[0-9]{0," + (digitsAfterZero - 1) + "})?)||(\\.)?");
}
@Override
public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
Matcher matcher = mPattern.matcher(dest);
if (!matcher.matches())
return "";
return null;
}
}
ধাপ ৪: ম্যানিফেস্ট ফাইল
সাধারণ ম্যানিফেস্ট কনফিগারেশন থাকবে।
কিভাবে কাজ করে?
DecimalDigitsInputFilter(5, 2) মানে ব্যবহারকারী দশমিকের আগে সর্বোচ্চ ৫ অঙ্ক এবং দশমিকের পরে সর্বোচ্চ ২ অঙ্ক লিখতে পারবেন। আপনার প্রয়োজন অনুযায়ী এই সংখ্যাগুলো পরিবর্তন করতে পারেন।