সম্পাদনা পাঠ্য পাঠের শেষে কার্সার রাখুন


883

আমি একটি EditTextঅন ​​এর মান পরিবর্তন করছি keyListener

আমি যখন পাঠ্যটি পরিবর্তন করি তখন কার্সারটি শুরুতে চলে যাচ্ছে EditText । পাঠ্যের শেষে আমার কার্সারটি দরকার।

কীভাবে পাঠ্যটির শেষে কার্সারটি সরানো যায় EditText


3
আমি একই ইস্যু জুড়ে এসেছি। তবে আমি যা নিজের থেকে আরও ভালভাবে জিজ্ঞাসা করেছি তা হ'ল কেন এটি হচ্ছে, যাতে আমি নিজেই কেরেটটি সরিয়ে নেওয়ার পরিবর্তে সমস্যাটি সমাধান করতে পারি।
কানদা

3
@ কানেদা আমি সম্পূর্ণরূপে একমত, তবে আপনি যদি আসল সমাধানটি যুক্ত করেন তবে তা সহায়ক হত।
এজেন্টকনফফ

1
@ জয়নোডিস এটি কেবল একটি চিন্তাভাবনা ছিল। আমি যেমন বলেছিলাম আমি একই সমস্যাটি পেরিয়ে এসেছি, এর অর্থ এই নয় যে আমি সমাধানটি পেয়েছি। আমার ক্ষেত্রে আমার কাছে আই EditTextএর আইটেম হিসাবে সমস্যা ছিল ListView। পরীক্ষার ক্ষেত্রে, আমি ListViewউত্স কোডে নিজেই কিছু পরিবর্তন করেছি , যা একটি জটিল জন্তু, এবং এমুলেটরটিতে পরীক্ষিত। এটি উপাদান দ্বারা তৈরি ফোকাস নিয়ন্ত্রণ পরিচালনার সাথে সম্পর্কিত ছিল। অবশ্যই এটি কোনও সমাধান নয় যা আমি আমাদের বন্ধুকে সহায়তা করতে পারি। :)
কানদা


এটি OnFocusChangedকলব্যাকের অভ্যন্তরে কাজ করে না । সেখানে সমাধানটি রান রানযোগ্যের ভিতরে সেটস্লেশন স্থাপন এবং এটি প্রধান থ্রেডে চালানো হয়। এখানে স্ট্যাকওভারফ্লো.com
আলী নেম

উত্তর:


1317

এটা চেষ্টা কর:

EditText et = (EditText)findViewById(R.id.inbox);
et.setSelection(et.getText().length());

15
এটি আমার ক্ষেত্রে কাজ করে না। সেট-সিলেকশন () পদ্ধতির কোনও প্রভাব নেই বলে মনে হচ্ছে। আমার এডিটেক্সট ভিউতে ইমেজস্প্যান রয়েছে। অন্য কিছু কাজ আছে?
toobsco42

@ মার্কস, আমার একই সমস্যা ছিল এবং আমার পক্ষে নিখুঁতভাবে কাজ করেছি। আমি একটি ডায়ালগ এডিটেক্সট এবং মূল পর্দা থেকে প্রাক-পপুলেটিং পাঠ ব্যবহার করছিলাম। যখন এটি ঘটে তখন কার্সার শুরুতে ছিল এবং শেষ দিকে নয় তবে আমি আপনার পরামর্শটি চেষ্টা করার পরে সবকিছু ঠিক আছে, আমি যেভাবে চাইছিলাম। এই পোস্ট করার জন্য আপনাকে ধন্যবাদ।
ভিনসি

4
আরে @ মুল্য, আমি এখন এটি onSelectionChanged()একটি EditTextশ্রেণীর পদ্ধতিকে ওভাররাইড করে পরিচালনা করছি : public void onSelectionChanged(int start, int end) { CharSequence text = getText(); if (text != null) { if (start != text.length() || end != text.length()) { setSelection(text.length(), text.length()); return; } } super.onSelectionChanged(start, end); }
toobsco42

19
আপনার সারিতে উঠতে আপনাকে এট.পোস্ট (নতুন রান্নেবল ({... এটিসেটসেল ...) ব্যবহার করতে হতে পারে This এটি কারণ অ্যান্ড্রয়েড পোস্টের মাধ্যমে একটি ভাল সময় পর্যন্ত কিছু বিন্যাসের জিনিসগুলি করার জন্য অপেক্ষা করে থাকে যদি আপনি সেটিং নির্বাচন করার চেষ্টা করেন তবে সিস্টেমটি শেষ হওয়ার আগে এটি আপনার
কাজটিকে

1
এটি এখানে কাজ করে, আপনার উত্তরের জন্য ধন্যবাদ ut তবে আপনার এটি করা উচিত: editText.setText (গুলি); editText.setSelection (editText.getText () দৈর্ঘ্য ()।); //
সেটটেক্সটের

223

এডিটেক্সট এর জন্য অ্যাপেন্ড নামে একটি ফাংশন রয়েছে যা বর্তমান সম্পাদনা মানকে স্ট্রিংয়ের মান যুক্ত করে এবং মানটির শেষে কার্সার রাখে। আপনার বর্তমান এডিটেক্সট মান হিসাবে স্ট্রিং মান থাকতে পারে এবং অ্যাপেন্ড () কল করুন;

myedittext.append("current_this_edittext_string"); 

1
আপনার ইতিমধ্যে আপনার সম্পাদনা পাঠ্য পাঠ্য থাকলে কেবল লিখুনmyedittext.append("");
ymerdrengene

4
@Ymerdrengene শুধু আবেদন করা myedittext.append("");আমার পক্ষে কাজ করেনি!
চিন্তন শাহ

4
এটি নিখুঁত কারণ এটি কেবল আমার কোডের লাইনটি প্রতিস্থাপন করে। এডিটেক্সটফিল্ড.সেটটেক্সট ব্যবহার করছিল এবং এটি সংযোজনের জন্য সরিয়ে নিয়েছিল। খুব সহজ.
theblitz

যদি এটি কাজ করে বা না করে তবে ব্যবহারের উপর নির্ভর করে। আমার পক্ষে তা হয়নি। ব্যবহার করা Selectionহ'ল সেই আইএমও অর্জনের সঠিক উপায়।
Sud007

139

Kotlin :

কার্সারটিকে শুরুর অবস্থানে সেট করুন :

val editText = findViewById(R.id.edittext_id) as EditText
editText.setSelection(0)

সম্পাদনা পাঠের শেষে কার্সারটি সেট করুন :

val editText = findViewById(R.id.edittext_id) as EditText
editText.setSelection(editText.text.length)

কোডের নীচে দ্বিতীয় বর্ণের পরে কার্সারটি রাখা হবে :

val editText = findViewById(R.id.edittext_id) as EditText
editText.setSelection(2)

জাভা :

কার্সারটিকে শুরুর অবস্থানে সেট করুন :

 EditText editText = (EditText)findViewById(R.id.edittext_id);
 editText.setSelection(0);

সম্পাদনা পাঠের শেষে কার্সারটি সেট করুন :

EditText editText = (EditText)findViewById(R.id.edittext_id);
editText.setSelection(editText.getText().length());

কোডের নীচে দ্বিতীয় বর্ণের পরে কার্সারটি রাখা হবে :

EditText editText = (EditText)findViewById(R.id.edittext_id);
editText.setSelection(2);

1
প্রতিস্থাপন করতে পারে findViewById(R.id.edittext_id) as EditTextসঙ্গে findViewById<EditText>(R.id.edittext_id)বা শুধু যদি ব্যবহার ঢালাই এড়াতেAPI 26+
Evin1_

95

আপনি যদি setTextআগে কল করেছিলেন এবং নতুন পাঠ্য setSelectionপৃথকভাবে চালিতযোগ্য View.post(Runnable)( এই বিষয়টি থেকে পুনরায় পোস্ট করুন ) চালানোর জন্য লেআউট ফেজ কলটি না পেয়ে ।

সুতরাং, আমার জন্য এই কোডটি কাজ করে:

editText.setText("text");
editText.post(new Runnable() {
         @Override
         public void run() {
             editText.setSelection(editText.getText().length());
         }
});

05/16/2019 সম্পাদনা করুন: এখনই আমি তার জন্য কোটলিন এক্সটেনশনটি ব্যবহার করছি:

fun EditText.placeCursorToEnd() {
    this.setSelection(this.text.length)
}

এবং তারপরে - editText.placeCursorToEnd ()।


ধন্যবাদ এটি সত্যিই আমার জন্য কাজ করেছে। আমি সেট-সিলেকশন কল করার চেষ্টা করছিলাম তবে এটি কার্যকর হবে না। আমার ক্ষেত্রে, আমি পাঠ্য সম্পাদনা করার জন্য একটি নির্দিষ্ট উপসর্গ সেট করার চেষ্টা করছিলাম, এবং তাই উপসর্গটি স্থাপনের পরে আমার কার্সারটিকে উপসর্গের শেষের দিকে সেট করা দরকার যাতে ব্যবহারকারী উপসর্গের পরে ডেটা প্রবেশ করতে পারে। যেহেতু আমি একটি টেক্সট ওয়াচারের কনস্ট্রাক্টরে সেটস্লেশন করছিলাম তাই এটি কাজ করে না কেন তা হতে পারে। তবে আপনার সমাধানটি দুর্দান্ত কাজ করেছে!
ওয়ান্ড মেকার

আমি এই পোস্টটিটি আমার মাল্টিআউটো কমপ্লিটটেক্সটভিউয়ের ক্লিকযোগ্যস্প্যান পদ্ধতিতে ব্যবহার করছি এবং এটি কাজ করে ..... আমি পাঠ্যের স্প্যানের মোছার আইকনটি ক্লিক করার পরে কার্সারটি শেষে যেতে চাই ... এটি সর্বশেষতম অ্যান্ড্রয়েড মোবাইলগুলিতে কাজ করে। .. তবে পুরানো সংস্করণগুলিতে প্রথম ক্লিকের পরে কিছুটা সময় লাগে ... আমার সমস্ত অন্যান্য আইটেম ক্লিকযোগ্য হয়ে উঠবে না ... কোনও ক্লু ??
বিজয়রাজ

1
কেন জানি না, তবে এটিই কেবল আমার পক্ষে কাজ করে! আমার সম্পাদনা পাঠ্যের একটি ফোকাস / পাঠ্য পরিবর্তিত শ্রোতা রয়েছে এবং এটি একটি টেক্সটইনপুটলয়েটে মুড়ে যায়। এই জিনিসগুলির মধ্যে একটি হ'ল এটি জগাখিচুড়ি করছে।
ড্যানিয়েল উইলসন

42

আপনি পাঠ্যের শেষে কার্সারটি EditTextভিউতে এভাবে রাখতে পারেন:

EditText et = (EditText)findViewById(R.id.textview);
int textLength = et.getText().length();
et.setSelection(textLength, textLength);

27
editText.setOnKeyListener(new View.OnKeyListener() {
    @Override
    public boolean onKey(View v, int keyCode, KeyEvent event) {
        editText.setSelection(editText.getText().length());
        return false;
    }
});

21

এটি আর একটি সম্ভাব্য সমাধান:

et.append("");

এই সমাধানটি কোনও কারণে কার্যকর না হলে কেবল চেষ্টা করুন:

et.setSelection(et.getText().length());

12
/**
 * Set cursor to end of text in edittext when user clicks Next on Keyboard.
 */
View.OnFocusChangeListener onFocusChangeListener = new View.OnFocusChangeListener() {
    @Override
    public void onFocusChange(View view, boolean b) {
        if (b) {
            ((EditText) view).setSelection(((EditText) view).getText().length());
        }
    }
};

mEditFirstName.setOnFocusChangeListener(onFocusChangeListener); 
mEditLastName.setOnFocusChangeListener(onFocusChangeListener);

এটা আমার জন্য ভাল কাজ!


12

আমার ক্ষেত্রে আমি নিম্নলিখিত কোটলিন এক্সটি তৈরি করেছি। ফাংশন, কারও জন্য দরকারী হতে পারে

 private fun EditText.focus(){
        requestFocus()
        setSelection(length())
    }

তারপরে নিম্নরূপ ব্যবহার করুন

mEditText.focus()

12

যদি আপনার সম্পাদনা পাঠ পরিষ্কার না হয়:

editText.setText("");
editText.append("New text");

অথবা

editText.setText(null);
editText.append("New text");


10

আমি মনে করি এটি আপনি যা চান তা অর্জন করতে পারে।

 Editable etext = mSubjectTextEditor.getText();
 Selection.setSelection(etext, etext.length());

যদি আমার পর্যবেক্ষণগুলি সঠিক হয়, তবে এটি প্রতিটি উইজেটের জন্য android.widget.TextView $ IClipboardDataPasteEventImpl এর উদাহরণ তৈরি করে। আমি তাদের টন দিয়ে শেষ। স্পষ্টতই এগুলি শেষ পর্যন্ত পরিষ্কার হয়ে যায়, তবে মনে হয় এগুলি মেমরির খরচ বাড়ায়। আমার একটি সংলাপের 12 টি দৃষ্টান্ত ছিল, এটি কেবলমাত্র প্রভাবশালী (কী তা বাঁচিয়ে রাখছে) উপরে বর্ণিত উদাহরণ হিসাবে রয়েছে।
এজেন্টকনফফ

কোডটির সেই টুকরোটি কোডে উপযুক্ত অবস্থানে স্থাপন করা (যেখানে আপনি সরাসরি টেক্সটটিতে পাঠ্য সংযোজন করছেন)। ধন্যবাদ!
Sud007

9

প্রশ্নটি পুরানো এবং উত্তর, তবে আমি মনে করি যদি আপনি অ্যান্ড্রয়েডের জন্য সদ্য প্রকাশিত ডেটাবাইন্ডিং সরঞ্জামগুলি ব্যবহার করতে চান তবে এই উত্তরটি দেওয়া কার্যকর হতে পারে, কেবল এটি আপনার এক্সএমএলে সেট করুন:

<data>
    <variable name="stringValue" type="String"/>
</data>
...
<EditText
        ...
        android:text="@={stringValue}"
        android:selection="@{stringValue.length()}"
        ...
/>

6

এখানে চিত্র বর্ণনা লিখুন

হ্যালো চেষ্টা করুন

 <EditText
       android:id="@+id/edt_text"
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:text="Hello World!"
       android:cursorVisible="true"/>

EditText editText = findViewById(R.id.editText); editText.setSelection(editText.getText().length()); // End pointকার্সার


5

আপনি যদি সমস্ত পাঠ্য নির্বাচন করতে চান এবং কেবল পুরানোটির পরিবর্তে নতুন পাঠ্য প্রবেশ করতে চান তবে আপনি এটি ব্যবহার করতে পারেন

    android:selectAllOnFocus="true"


5

editText.setSelectionএখানে যাদু। মূলত নির্বাচন আপনাকে যে কোনও অবস্থাতেই কার্সার রাখে।

EditText editText = findViewById(R.id.editText);
editText.setSelection(editText.getText().length());

এটি সম্পাদনা পাঠের শেষে কার্সার রাখে। মূলত editText.getText().length()আপনাকে পাঠ্যের দৈর্ঘ্য দেয়। তারপরে আপনি setSelectionদৈর্ঘ্য সহ ব্যবহার করুন ।

editText.setSelection(0);

এটি শুরুর অবস্থানে কার্সার সেট করার জন্য (0)।


4

অন্যান্য পরীক্ষার জন্য যে কোডগুলি আমি পরীক্ষা করেছি সেগুলি কার্যকরভাবে কার্যকর হয়নি যে ব্যবহারকারী এখনও স্ট্রিংয়ের মাঝখানে যেখানেই ক্যারেট / কার্সার রাখতে পারে (যেমন: 12 | 3.00 - যেখানে | কার্সার)। এডিট টেক্সটে যখনই স্পর্শ আসে তখনই আমার দ্রবণটি সর্বদা স্ট্রিংয়ের শেষে कर्सरটি রাখে।

চূড়ান্ত সমাধানটি হ'ল:

// For a EditText like:
<EditText
                android:id="@+id/EditTextAmount"
                android:layout_height="wrap_content"
                android:layout_width="fill_parent"
                android:hint="@string/amount"
                android:layout_weight="1"
                android:text="@string/zero_value"
                android:inputType="text|numberDecimal"
                android:maxLength="13"/>

@ স্ট্রিং / পরিমাণ = "0.00" @ স্ট্রিং / শূন্য_মূল্য = "0.00"

// Create a Static boolean flag
private static boolean returnNext; 


// Set caret/cursor to the end on focus change
EditTextAmount.setOnFocusChangeListener(new View.OnFocusChangeListener() {
            @Override
            public void onFocusChange(View editText, boolean hasFocus) {
                if(hasFocus){
                    ((EditText) editText).setSelection(((EditText) editText).getText().length());
                }
            }
        });

// Create a touch listener and put caret to the end (no matter where the user touched in the middle of the string)
EditTextAmount.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View editText, MotionEvent event) {
                ((EditText) editText).onTouchEvent(event);
                ((EditText) editText).setSelection(((EditText) editText).getText().length());
                return true;
            }
        });


// Implement a Currency Mask with addTextChangedListener
EditTextAmount.addTextChangedListener(new TextWatcher() {
            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {
                String input = s.toString();
                String output = new String();
                String buffer = new String();
                String decimals = new String();
                String numbers = Integer.toString(Integer.parseInt(input.replaceAll("[^0-9]", "")));

                if(returnNext){
                    returnNext = false;
                    return;
                }

                returnNext = true;

                if (numbers.equals("0")){
                    output += "0.00";
                }
                else if (numbers.length() <= 2){
                    output += "0." + String.format("%02d", Integer.parseInt(numbers));
                }
                else if(numbers.length() >= 3){
                    decimals = numbers.substring(numbers.length() - 2);
                    int commaCounter = 0;
                    for(int i=numbers.length()-3; i>=0; i--){
                        if(commaCounter == 3){
                            buffer += ",";
                            commaCounter = 0;
                        }
                        buffer += numbers.charAt(i);
                        commaCounter++;
                    }
                    output = new StringBuilder(buffer).reverse().toString() + "." + decimals;
                }
                EditTextAmount.setText(output);
                EditTextAmount.setSelection(EditTextAmount.getText().length());
            }

            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {
                /*String input = s.toString();
                if(input.equals("0.0")){
                    EditTextAmount.setText("0.00");
                    EditTextAmount.setSelection(EditTextAmount.getText().length());
                    return;
                }*/
            }

            @Override
            public void afterTextChanged(Editable s) {

            }
        });

আশা করি এটা সাহায্য করবে!


3

ভিউমোডেল, লাইভ ডেটা এবং ডেটা বাইন্ডিংয়ের জন্য

EditTextআমার নোটস অ্যাপ্লিকেশনটিতে মাল্টলাইন সমর্থন করার জন্য আমার এই কার্যকারিতাটি দরকার । আমি পাঠকের শেষে কার্সারটি চেয়েছিলাম যখন ব্যবহারকারী নোট টেক্সটযুক্ত টুকরোটিতে নেভিগেট করে।

Djleop দ্বারা প্রস্তাবিত সমাধানটি কাছে আসে। তবে এর সাথে সমস্যাটি হ'ল, যদি ব্যবহারকারী সম্পাদনা করার জন্য কার্সারটিকে পাঠ্যের মাঝখানে কোথাও রেখে দেয় এবং টাইপ করা শুরু করে, কার্সারটি আবার পাঠ্যের শেষে চলে যায়। এটি ঘটেছে কারণLiveData নতুন মানটি নির্গত হবে এবং কার্সার আবার পাঠ্যের শেষে চলে যাবে যার ফলস্বরূপ ব্যবহারকারী মাঝখানে কোথাও পাঠ্য সম্পাদনা করতে সক্ষম হবে না।

এটি সমাধানের জন্য, আমি এটি ব্যবহার MediatorLiveDataএবং এটি Stringএকবার ব্যবহার করে একবার ব্যবহার করার দৈর্ঘ্য নির্ধারণ করি । এটি লাইভডেটা কেবল একবার মানটি পড়তে বাধ্য করবে, এটি হ'ল যখন ব্যবহারকারী টুকরাটিতে নেভিগেট করবে। এর পরে ব্যবহারকারী সেখানে পাঠ্য সম্পাদনা করতে চান সেখানে কার্সারটি রাখতে পারেন।

ViewModel

private var accessedPosition: Boolean = false

val cursorPosition = MediatorLiveData<Event<Int>>().apply {
    addSource(yourObject) { value ->
        if(!accessedPosition) {
            setValue(Event(yourObject.note.length))
            accessedPosition = true
        }
    }
}

এখানে, yourObjectডাটাবেস থেকে আর একটি লাইভ ডেটা পুনরুদ্ধার করা হয়েছে যা আপনি স্ট্রিংয়ের পাঠ্যটিতে প্রদর্শন করছেন inEditText

তারপরে MediatorLiveDataবাঁধাইকারী অ্যাডাপ্টার ব্যবহার করে এটি আপনার সম্পাদনা পাঠ্যবন্ধকে আবদ্ধ করুন ।

এক্সএমএল

পাঠ্য ইনপুট গ্রহণের পাশাপাশি পাঠ্য প্রদর্শন করার জন্য দ্বি-মুখী ডেটা বাইন্ডিং ব্যবহার করে।

<!-- android:text must be placed before cursorPosition otherwise we'll get IndexOutOfBounds exception-->
<EditText
    android:text="@={viewModel.noteText}"
    cursorPosition="@{viewModel.cursorPosition}" />

বাঁধাই অ্যাডাপ্টার

@BindingAdapter("cursorPosition")
fun bindCursorPosition(editText: EditText, event: Event<Int>?) {
    event?.getContentIfNotHandled()?.let { editText.setSelection(it) }
}

Event শ্রেণী

এখানে Eventক্লাসটি গুগলের জোসে আলকারিরকা দ্বারা লিখিত একক লাইভএভেন্টের মতো । আমি এখানে স্ক্রিন রোটেশন যত্ন নিতে ব্যবহার। সিঙ্গল ব্যবহার করে Eventনিশ্চিত করা হবে যে ব্যবহারকারী যখন পাঠ্যটির মাঝখানে কোথাও সম্পাদনা করছেন এবং স্ক্রিনটি ঘোরবে তখন কার্সারটি পাঠ্যের শেষের দিকে চলে যাবে না। স্ক্রিনটি ঘোরার সময় এটি একই অবস্থান বজায় রাখবে।

এখানে Eventক্লাস:

open class Event<out T>(private val content: T) {

    var hasBeenHandled = false
        private set // Allow external read but not write

    /**
     * Returns the content and prevents its use again.
     */
    fun getContentIfNotHandled(): T? {
        return if (hasBeenHandled) {
            null
        } else {
            hasBeenHandled = true
            content
        }
    }

    /**
     * Returns the content, even if it's already been handled.
     */
    fun peekContent(): T = content
}

এটি আমার জন্য কাজ করে এমন একটি সমাধান এবং ভাল ব্যবহারকারীর অভিজ্ঞতা সরবরাহ করে। আশা করি এটি আপনার প্রকল্পগুলিতেও সহায়তা করবে।


এই উত্তরটি এগিয়ে যেতে হবে। অনেক ধন্যবাদ
আব্দুল রহমান শামাইর

2

@ অ্যান দুয়ের জবাবের মতো, তবে এটি আমার পক্ষে কার্যকর হয়নি। আমার যখন কার্সারটি কেবলমাত্র সম্পাদনা পাঠ্যটি ট্যাপ করে এবং তারপরে কার্সারের অবস্থানটি পরে নির্বাচন করতে সক্ষম হয় কেবল তখনই শেষ দিকে যেতে হয়েছিল, এটিই কেবল আমার পক্ষে কাজ করেছে

boolean textFocus = false; //define somewhere globally in the class

//in onFinishInflate() or somewhere
editText.setOnTouchListener(new OnTouchListener() {
    @Override
    public boolean onTouch(View v, MotionEvent event) {

        editText.onTouchEvent(event);

        if(!textFocus) {
            editText.setSelection(editText.getText().length());
            textFocus = true;
        }

        return true;
    }
});

editText.setOnFocusChangeListener(new OnFocusChangeListener() {
    @Override
    public void onFocusChange(View v, boolean hasFocus) {
        textFocus = false;
    }
});



2

উপরের উত্তরগুলি আমার পক্ষে কার্যকর হয়নি। সুতরাং আমি একটি নতুন সমাধান খুঁজে পেয়েছি। এটি কারও পক্ষে সহায়ক। আমি বর্তমান তারিখ অনুসারে অ্যান্ড্রয়েড স্টুডিওর সর্বশেষতম সংস্করণ অর্থাৎ 3.5 ব্যবহার করছি। উপরের উত্তরগুলি কোনও প্রতিক্রিয়া দেখায়নি কারণ হতে পারে।

কোড:

EditText available_seats = findViewById(R.id.available_seats);
Selection.setSelection(available_seats.getText(),available_seats.getText().length());

এখানে, 1 ম আর্গুমেন্টটি স্প্যানিয়েবল পাঠ্য মান যা আপনি প্লে করতে চান তবে দ্বিতীয় আর্গুমেন্টটি সূচক মান। যেহেতু, আমরা পাঠ্যের শেষে কার্সারটি চাই, আমরা getText ()। দৈর্ঘ্য () গ্রহণ করলাম যা পাঠ্যের দৈর্ঘ্য ফিরিয়ে দেয়


1
আমার আনন্দ! শুভ কোডিং!
প্রজওয়াল ডাব্লু

1
public class CustomEditText extends EditText {
    public CustomEditText(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public CustomEditText(Context context) {
        super(context);
    }

    public CustomEditText(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }


    @Override
    protected void onFocusChanged(boolean focused, int direction, Rect previouslyFocusedRect) {
        super.onFocusChanged(focused, direction, previouslyFocusedRect);
        this.setSelection(this.getText().length());
    }

    @Override
    protected void onSelectionChanged(int selStart, int selEnd) {

    }
}

আপনার এক্সএমএল ফাইলটিতে এই কাস্টমএডিটটেক্সট ব্যবহার করুন, এটি কাজ করবে। আমি এটি পরীক্ষা করেছি এবং এটি আমার জন্য কাজ করছে।


1

আপনি সম্পাদনা পাঠ্য দর্শনটিতে পাঠ্যের শেষে কার্সার রাখতে চান

 EditText rename;
 String title = "title_goes_here";
 int counts = (int) title.length();
 rename.setSelection(counts);
 rename.setText(title);
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.