আমি বেশ কিছু সময় ধরে পাশাপাশি লড়াই করেছি, তবে শেষ পর্যন্ত আমি একটি সমাধান খুঁজে পেয়েছি!
কেবল যেমন একটি কাস্টম সম্পাদনা পাঠ্য বর্গ তৈরি করুন:
public class EditTextImeMultiline extends EditText {
public void init() {
addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
for (int i = s.length(); i > 0; i--)
if (s.subSequence(i - 1, i).toString().equals("\n"))
s.replace(i - 1, i, "");
}
});
setSingleLine();
setHorizontallyScrolling(false);
this.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
EditTextImeMultiline.this.setLines(EditTextImeMultiline.this.getLineCount());
}
});
}
public EditTextImeMultiline(Context context) {
super(context);
init();
}
public EditTextImeMultiline(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
public EditTextImeMultiline(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
init();
}
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
public EditTextImeMultiline(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
init();
}
}
এই শ্রেণিটি লাইনব্রাইকগুলি সরিয়ে দেয় (remove n), পাঠ্যটি মাল্টলাইনলাইন হিসাবে পাঠ্যটিকে মোড়া করে দেয় এবং আপনাকে একটি আইএমএक्शन দ্বারা প্রবেশ বোতামটি প্রতিস্থাপন করতে দেয়;)।
আপনাকে কেবল এটি ক্লাসিক এডিটেক্সট ক্লাসের পরিবর্তে আপনার এক্সএমএলে কল করতে হবে।
এখানে যুক্তি ব্যাখ্যা করতে:
- এন্টারটির পরিবর্তে আইমিএक्शन বোতামটি প্রদর্শন করতে সক্ষম হতে সম্পাদনা পাঠ্যকে সিঙ্গললাইন হিসাবে সেট করুন।
- দেখার শেষে পৌঁছে যাওয়ার সময় পাঠ্যটিকে পরবর্তী লাইনে যেতে অনুভূমিক স্ক্রোলিংটি সরিয়ে ফেলুন।
- OnGlobalLayoutListener এর সাহায্যে লেআউট পরিবর্তনগুলি দেখুন এবং এটি "লাইন" পরামিতিটি এডিট টেক্সট দ্বারা অনুষ্ঠিত বর্তমান পাঠ্যের "লাইনকাউন্ট" এ সেট করুন। এটিই এর উচ্চতা সতেজ করে তোলে।