آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

بالا نیامدن کلید تایپ

Sahand  10 سال پیش  10 سال پیش
+1 0

سلام.

میخواستم کاری بکنم که وقتی روی ادیت تکست کلیک میشه یا تاچ میشه صفحه کیبورد بالا نیاد باید چیکار کنم؟

+2 0
چندتا راهکار خوب برات پیدا کردم لینک و لینک و لینک و لینک و لینک و لینک (10 سال پیش)
0 0
ممنون (10 سال پیش)
 برای این سوال 1 پاسخ وجود دارد.
پاسخ به سوال 
Reza  10 سال پیش
+3 0

سلام

    ممنون بابت لینک ها . برای مخفی کردن کیبورد اندروید و استفاده از کیبورد اختصاصی ، حدود 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 میکردم گزینه ها بالای صفحه ظاهر میشد و به هیچ عنوان کیبورد ظاهر نمیشد .

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

در کل روش دوم بهتره .


پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .