کار با EditText
<EditText
android:id="@+id/input"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="number"
<-- اینجا -->
android:maxLength="4" />
ی سوال دیگه راجب EditText امیدوارم همینجا جواب بگیرم و مجبور نشم یک سوال دیگه براش ایجاد کنم!
میخواهم بعد این که رو یک دکمه کلیک شد و مقدار EditText گرفته شد مقدار وارد شده از EditText حذف بشه از چه کدی استفاده کنم؟!
اگه درست منظورتون رو متوجه شده باشم اول مقدار edittext توی یک string به اسم value ذخیره شه و سپس مقدار پاک شه و یه جورایی edittext ریست شه :
EditText test =(EditText) findViewById(R.id.test);
Button button = (Button) findViewById(R.id.button);
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
String value = test.getText().toString();
test.setText("");
}
});
ایا راهی هست که بشه کاری کرد که کاربر فقط مجاز به وارد کردن یک سری کاراکتر های خاص باشه مثلا فقط بتونه حروف الفبا رو وارد کنه اونم الفای فارسی؟!
بله در بخش Properties تکستت در قسمت Input type میتونی نوع کاراکتر مجاز مورد نظرت رو انتخاب کنی.
اینطوری میتونی keycode رو داشته باشی
editText.setOnKeyListener(new OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
//تعریف کد حروف فارسی
}
});
و فقط کد های رنج حروف فارسی رو بپذیری
کد های رنج فارسی رو چک نکردم ولی فکر کنم ایناس :
if((keycode<13 ||keycode>13))
if((keycode<32 || keycode >32))
if((keycode<8 || keycode>8))
if ((keycode < 1574 || keycode > 1711))
return false;
در نهایت میشه این کد زیر درست برداشت کردم؟
editText.setOnKeyListener(new OnKeyListener(){
@Override
public boolean onKey(View v,int keyCode,KeyEvent event){
//تعریف کد حروف فارسی
if((keycode<13||keycode>13))
if((keycode<32|| keycode >32))
if((keycode<8|| keycode>8))
if((keycode <1574|| keycode >1711))
return false;
}
});
EditText edtMain = (EditText) findViewById(R.id.edtMain);
final TextView txtCode = (TextView) findViewById(R.id.txtCode);
InputFilter filter = new InputFilter() {
@Override
public CharSequence filter(CharSequence source, int start, int end,
Spanned dest, int dstart, int dend) {
for (int i = start; i < end; i++) {
int keycode = Character.getNumericValue(source.charAt(i));
txtCode.setText("" + keycode);
if ((keycode < 13 || keycode > 13))
if ((keycode < 32 || keycode > 32))
if ((keycode < 8 || keycode > 8))
if ((keycode < 1574 || keycode > 1711))
return "";
}
return null;
}
};
edtMain.setFilters(new InputFilter[] { filter });
البته کیکد ها رو تست نکردم - لیسنر قبلی طبق داکیومنت های گوگل با کیبورد های نرم افزاری کار نمیکنه.
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .