بالا نیامدن کلید تایپ
سلام.
میخواستم کاری بکنم که وقتی روی ادیت تکست کلیک میشه یا تاچ میشه صفحه کیبورد بالا نیاد باید چیکار کنم؟
سلام
ممنون بابت لینک ها . برای مخفی کردن کیبورد اندروید و استفاده از کیبورد اختصاصی ، حدود 30 روش در این لینک ها وجود داشت که بعضی از اونا جواب نمی داد و کیبورد اندروید نمایش داده میشد ، و بعضی از اونا cursor نشون داده نمی شد . بعضی از روش ها هم که کیبورد رو مخفی میکرد باعث میشد گزینه های ویرایش مثل cut و copy و paste غیر فعال بشه :
مثلا روش ساخت یه کلاس مشتق شده از EditText که در متد onCheckIsTextEditor مقدار false برمیگرده :
public class NoImeEditText extends EditText {
public EditTextEx(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
public boolean onCheckIsTextEditor() {
return false;
}
}
که کیبورد مخفی میشه ولی باعث میشه editText غیر فعال بشه .
و یا روش زیر :
edt.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
int inType = edt.getInputType(); // backup the input type
edt.setInputType(InputType.TYPE_NULL); // disable soft input
edt.onTouchEvent(event); // call native handler
edt.setInputType(inType); // restore input type
return true; // consume touch even
}
});
که کیبورد مخفی میشه و cursor هم نمایان هست ولی با کلیک روی editText نمیتونی Cursor رو به مکان دلخواه ببری تا از کیبورد خودت استفاده کنی و همیشه cursor در ابتدا ظاهر میشه . ( البته روش خوبیه اگه بتونی در کیبورد اختصاصی کلید های حرکت به چپ و راست هم قرار بدی )
2 روش از همه بهتر بود و هیچ ایرادی نداشت : ( در هر دو روش کیبورد ظاهر نمیشه و گزینه های ویرایش هم وجود داره و با هر کلیک روی جعبه متن ، مکان cursor هم قابل انتخابه )
روش اول :
فقط کافیه برای هر editText خط زیر زیر رو اضافه کنید :
edt.setTextIsSelectable(true);
که البته برای من با درج خصوصیت در فایل xml جواب نداد و فقط با کد جاوا جواب داد .
روش دوم :
این روش برای حالتی خوبه که در تمام editText های اکتیویتی ، دوست داریم کیبورد ظاهر نشه . خط زیر رو در ابتدای اکتیویتی وارد کنید :
getWindow().setFlags(WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM,
WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM);
تفاوتی که روش اول و دوم برای من داشت این بود که در روش اول اگر انتهای متن longClick میکردم گزینه های copy و paste با باز شدن کیبورد همراه بود و اگر در بین متن longClick میکردم این گزینه ها بالای صفحه ظاهر میشد بدون ظاهر شدن کیبورد . اما روش دوم در هر حالت longClick میکردم گزینه ها بالای صفحه ظاهر میشد و به هیچ عنوان کیبورد ظاهر نمیشد .
طبق سلیقه میتونین از هر کدوم که دوست داشتین استفاده کنین .
در کل روش دوم بهتره .
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .