ध्यान केंद्रित होने पर EditText के अंदर सभी पाठ का चयन करें


230

मेरे पास इसमें कुछ डमी टेक्स्ट के साथ एक EditText है। जब उपयोगकर्ता इस पर क्लिक करता है तो मैं चाहता हूं कि इसे चुना जाए ताकि जब उपयोगकर्ता डमी टेक्स्ट लिखना शुरू कर दे तो वह डिलीट हो जाए।

इसे कैसे प्राप्त किया जा सकता है?

जवाबों:


517

आप अपनी main.xmlफ़ाइल में कोशिश कर सकते हैं :

android:selectAllOnFocus="true"

या, जावा में, उपयोग करें

editText.setSelectAllOnFocus(true);

17
मैंने अभी सीखा है कि यह काम नहीं करता है, अगर EditText xml में UI बिल्डर द्वारा एक </ requestFocus> टैग डाला जाता है।
मचटनीक्स

@machtnix एक अन्य घटक पर ध्यान केंद्रित करें: stackoverflow.com/a/1662088/1020871
लव '

160
editText.setSelectAllOnFocus(true);

यदि आप इसे प्रोग्रामिक रूप से करना चाहते हैं तो यह काम करता है।


2
मेरे लिए भी .. उपरोक्त समाधान किसी तरह काम नहीं आया .. प्रोग्रामेटिक रूप से काम किया
मार्टिन क्रिस्टमैन

3
उन लोगों के लिए जो अभी भी ऊपर दिए गए उत्तर के साथ समस्या रखते हैं: इसके बजाय यह प्रयास करें। काम करने की पुष्टि की (भी परीक्षण के लिए Fragments)।
मि। हादीसत्रियो

कुछ अजीब कारण से xml तरीका उचित रूप से काम नहीं करता था और यह एक काम करता है। एसडीके के अंदर बग जैसा दिखता है।
ar-g

और यदि आप प्रोग्रामेटिक रूप से ध्यान केंद्रित कर रहे हैं ( वांछित editText.requestFocus()मुद्दे editText.clearFocus()को सुनिश्चित करने के लिए पहले से ही इस मामले में जहां दृश्य पहले से ही केंद्रित है
खराब होता है

33
EditText dummy = ... 

// android.view.View.OnFocusChangeListener
dummy.setOnFocusChangeListener(new OnFocusChangeListener(){
    public void onFocusChange(View v, boolean hasFocus){
        if (hasFocus) && (isDummyText())
            ((EditText)v).selectAll();
    }
});

आपकी मदद के लिए धन्यवाद, लेकिन मैं TheCottonSilk के समाधान को पसंद करता हूं क्योंकि मेरे पास 12 EditText हैं और मुझे अपना कोड यथासंभव साफ रखना पसंद है :) धन्यवाद वैसे भी!
गालिप

@ TheCottonSilk का समाधान डिज़ाइन टाइम विजेट्स के लिए सबसे अच्छा है और डाइरेक्टस एडिटेक्स डाईमैटिक एडिटेक्स के लिए सबसे अच्छा है।
बिष्णु पुडेल

2
@Galip OnFocusChangeListener listener = new OnFocusChangeListener... आदि ... तो editText1.setOnFocusChangeListener(listener) editText2.setOnFocusChangeListener(listener)और इतने पर ...
चिंगारी

25

मुझे पता है कि आपको एक समाधान मिल गया है, लेकिन वास्तव में आप जो पूछ रहे हैं उसे करने का उचित तरीका है कि आप android:hintअपने EditText में विशेषता का उपयोग करें । यह पाठ तब दिखाई देता है जब बॉक्स खाली होता है और फोकस नहीं होता है, लेकिन EditText बॉक्स का चयन करने पर गायब हो जाता है।


4
मेरे ऐप में उन फ़ील्ड्स को व्यक्तिगत विवरण द्वारा भरा गया है जिन्हें बचाया जा सकता है। जब मैं उन विवरणों को लोड करता हूं तो यह 'डमी' टेक्स्ट को बदल देगा। अपने करेन विधि के साथ, मैं उपयोगकर्ता द्वारा दर्ज किए गए विवरणों के बाद भी पाठ चयनित चुन सकता हूं। आपकी चिंताओं के लिए धन्यवाद!
गैलिप

12

कार्यक्रम पर फोकस और चयन कहकर इसे प्रबंधित किया

{
editabletext.requestFocus();
editabletext.selectAll();
}

11

आप Android की कोशिश क्यों नहीं करते : उपयोगकर्ता को संकेत प्रदान करने के लिए संकेत = "संकेत" .. !!

जब उपयोगकर्ता Edittextbox पर क्लिक करेगा तो "संकेत" अपने आप गायब हो जाएगा। इसका उचित और सबसे अच्छा समाधान।


4
अच्छा उत्तर। हालाँकि ऐसी परिस्थितियाँ हो सकती हैं जिन्हें आप EditText को उन मानों से आबाद करते हैं जिन्हें आप सेटिंग्स आदि से पढ़ते हैं और आप इन मूल्यों को बदलना जितना आसान बनाना चाहते हैं :)
nuala

5

आप इसके बाद EditText पर एक OnClick Method भी जोड़ सकते हैं

_editText.setSelectAllOnFocus(true);

और इसमें:

_editText.clearFocus();
_editText.requestFocus();

जैसे ही आप editText पर क्लिक करते हैं पूरा टेक्स्ट सिलेक्ट हो जाता है।


4

SelectAllOnFocus पहली बार EditText को फ़ोकस करने पर काम करता है, लेकिन यदि आप हर बार उपयोगकर्ता द्वारा उस पर क्लिक करने वाले टेक्स्ट का चयन करना चाहते हैं, तो आपको editText.clearFocus()बीच में कॉल करने की आवश्यकता है ।

उदाहरण के लिए, यदि आपके ऐप में एक EditText और एक बटन है, तो EditText बदलने के बाद बटन पर क्लिक करने से EditText में फ़ोकस छूट जाता है। तब उपयोगकर्ता को नए मूल्य में प्रवेश करने से पहले EditText में क्या है इसे हटाने के लिए कर्सर हैंडल और बैकस्पेस कुंजी का उपयोग करना होगा। इसलिए editText.clearFocus()बटन onClickविधि में कॉल करें ।


2

मैंने उपरोक्त उत्तर की कोशिश की और तब तक काम नहीं किया जब तक कि मैंने बयानों को स्विच नहीं किया। इसी से मेरा काम बना है:

    myEditText.setSelectAllOnFocus(true);
    myEditText.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            onClickMyEditText();
        }
    });

   private void onClickMyEditText() {
       if(myEditText.isFocused()){
        myEditText.clearFocus();
        myEditText.requestFocus();
       }else{
           myEditText.requestFocus();
           myEditText.clearFocus();
       }
   }

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



0

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

myEditText.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            if(myEditText.isFocused()){
                myEditText.requestFocus();
                myEditText.clearFocus();
                myEditText.setSelection(myEditText.getText().length(), 0);
            }else{
                myEditText.requestFocus();
                myEditText.clearFocus();
            }

        }
    });
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.