दिलचस्प पोस्ट
मार्गों में चलते हुए # अंगुल्याज़ में यूआरएल से # निकालना यूनिटी स्क्रिप्ट से यूआई कंट्रोल बनाएं कई श्रेणियों में वर्गीकृत करने के लिए scikit-learn का उपयोग करें Regex के साथ एक उपयोगकर्ता नाम को मान्य कैसे करें? C # (.NET) के लिए हेडलेस ब्राउज़र? कॉफी स्क्रिप्ट की मौजूदगी ऑपरेटर कैसे काम करता है? कैसे सी में एक यादृच्छिक संख्या उत्पन्न करने के लिए? ठीक से एक सूची से एक पूर्णांक निकालें <पूर्णांक> HTML5 में RTSP या RTP के माध्यम से स्ट्रीमिंग C, C ++, और C # में शून्य का क्या अर्थ है? आईफ़ोन एसडीके के साथ FTP के माध्यम से अपलोड करना और डाउनलोड करना मैं जावास्क्रिप्ट ऑब्जेक्ट से संपत्ति कैसे निकालूं? पूर्णांक प्रभाग को कार्यान्वित करने में जीसीसी एक अजीब संख्या से गुणन का उपयोग क्यों करता है? जीवित रखने के साथ पायथन urllib2 मुझे अपना फेसबुक एप्लिकेशन आईडी और गुप्त कुंजी कहां मिल सकती है?

EditText में टेक्स्ट के अंत में कर्सर रखें

मैं keyListener पर एक keyListener का मान बदल रहा हूँ

लेकिन जब मैं पाठ बदलता हूं, तो कर्सर EditText की शुरुआत में जा रहा है। मुझे पाठ के अंत में कर्सर की आवश्यकता है I

EditText को पाठ के अंत में एक EditText टेक्स्ट में कैसे स्थानांतरित करना है

वेब के समाधान से एकत्रित समाधान "EditText में टेक्स्ट के अंत में कर्सर रखें"

इसे इस्तेमाल करे:

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

एडीआईटेक्स्ट के लिए एपेंड नामक एक फ़ंक्शन है जो स्ट्रिंग मान को मौजूदा एडिटेक्स्ट मान को जोड़ता है और मूल्य के अंत में कर्सर को स्थान देता है। आपके पास स्ट्रिंग मान मौजूदा ediitext मान के रूप में हो सकता है और कॉल अपेंड ();

 myedittext.append("current_this_edittext_string"); 

यदि आपने पहले setSelection को बुलाया है और नए पाठ को लेआउट चरण कॉल setSelection गया है, तो एक अलग runnable में View.post(Runnable) ( इस विषय से repost View.post(Runnable) द्वारा निकाल दिया।

तो, मेरे लिए यह कोड काम करता है:

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

आप पाठ के अंत में कर्सर को इस तरह के EditText दृश्य में भी रख सकते हैं:

 EditText et = (EditText)findViewById(R.id.textview); int textLength = et.getText().length(); et.setSelection(textLength, textLength); 
 editText.setOnKeyListener(new View.OnKeyListener() { @Override public boolean onKey(View v, int keyCode, KeyEvent event) { editText.setSelection(editText.getText().length()); return false; } }); 

यह एक और संभावित समाधान है:

 et.append(""); 

अगर यह किसी भी कारण से काम नहीं करता है तो इस समाधान की कोशिश करें:

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

प्रारंभिक स्थिति में कर्सर सेट करने के लिए नीचे कोड है:

  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); 

आपको उस संपादन तकनीक की विधि सेट से चयन () प्राप्त करने में सक्षम होना चाहिए, यहां देखें

मुझे लगता है कि यह आप जो चाहें प्राप्त कर सकते हैं।

  Editable etext = mSubjectTextEditor.getText(); Selection.setSelection(etext, etext.length()); 
 /** * 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); 

यह मेरे लिए अच्छा काम करता है!

यदि आपका संपादन टेक्स्ट स्पष्ट नहीं है:

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

मैंने जो भी परीक्षण किया है, वह अन्य सभी कोडों के कारण अच्छा नहीं था क्योंकि उपयोगकर्ता अभी भी स्ट्रेट के बीच में कहीं भी कैरेट / कर्सर रख सकता है (उदा .: 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) { } }); 

आशा करता हूँ की ये काम करेगा!

यह चाल सुरक्षित रूप से करता है:

  editText.setText(""); if (!TextUtils.isEmpty(text)) { editText.append(text); } 

यदि आप सभी पाठ का चयन करना चाहते हैं और सिर्फ पुराने टेक्स्ट के बजाय नए टेक्स्ट में प्रवेश करना चाहते हैं, तो आप इसका उपयोग कर सकते हैं

  android:selectAllOnFocus="true" 

@एनह ड्यू के जवाब के समान, लेकिन मेरे लिए यह काम नहीं किया मुझे केवल कर्सर की जरूरत होती है जब वह अंत में स्थानांतरित होता है जब उपयोगकर्ता टेक्स्ट को संपादित करता है और फिर भी कर्सर की स्थिति का चयन करने में सक्षम हो जाता है, यह केवल एकमात्र कोड है जो मेरे लिए काम किया है

 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; } }); 

यह काम

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