Android एप्लिकेशन में प्रारंभिक फ़ोकस सेट करें


86

मेरे एंड्रॉइड एप्लिकेशन में यह स्वचालित रूप Buttonसे मेरे लेआउट में पहले मेरे ध्यान केंद्रित करता है , इसे एक नारंगी रूपरेखा देता है। मैं एक्सएमएल में प्रारंभिक फोकस को अधिमानतः कैसे सेट कर सकता हूं, और क्या यह कुछ भी नहीं सेट किया जा सकता है?

जवाबों:


159

आप requestFocusटैग का उपयोग कर सकते हैं :

<Button ...>
  <requestFocus />
</Button>

मुझे यह अजीब लगता है कि यह आपके किसी एक बटन को ऑटो-केंद्रित करता है, मैंने उस व्यवहार को अपने किसी भी विचार में नहीं देखा है।


हाँ, यह अब मेरे दो अनुप्रयोगों के साथ हुआ है। मुझे लगता है कि मैं एक ऐसे तत्व पर अनुरोध कर सकता हूं जो टेक्स्ट व्यू की तरह नहीं बदलता है या इसकी अनुमति नहीं दी जाएगी?
10

1
@stealthcopter: क्या आप मुझे बता सकते हैं कि आप किस Android संस्करण का उपयोग कर रहे हैं। मैं 2.1 और 2.2 का उपयोग कर रहा हूं, लेकिन requestFocus काम नहीं करता है।
मारक

वैसे मैं इसे सभी संस्करणों में उपयोग कर रहा हूं, लेकिन मुझे जो समस्या हो रही थी, वह इस पर गायब हो गई थी इसलिए मैंने बहुत जांच नहीं की है।
14 दिसंबर को स्टील्कॉप्टर

19
मैंने XML दृष्टिकोण की कोशिश की है, मैंने प्रोग्रामेटिक दृष्टिकोण की कोशिश की है। फिर भी EditText फोकस बनाए रखता है। बहुत कष्टप्रद !
किसी ने

4
<requestFocus /> यहाँ है: developer.android.com/guide/topics/resources/…
Erik B

63

@ कहीं भी, मैं ऊपर के सभी करने के लिए कोई फायदा नहीं हुआ की कोशिश की। मुझे जो फिक्स मिला वह http://www.helloandroid.com/tutorials/remove-autofocus-edittext-android से है । असल में, आपको समस्याग्रस्त बटन के ठीक ऊपर एक अदृश्य लेआउट बनाने की आवश्यकता है:

<LinearLayout android:focusable="true"
              android:focusableInTouchMode="true" 
              android:layout_width="0px"
              android:layout_height="0px" >
    <requestFocus />
</LinearLayout>

मैं एक AlertDialog पर ध्यान केंद्रित करने में सक्षम था और focusableintouchmode को सक्षम करने से मुझे इसे ठीक करने में मदद मिली। अनिवार्य रूप से, यहां बताया गया है: अलर्ट.शो (); alert.getButton (AlertDialog.BUTTON_POSITIVE) .setFocusableInTouchMode (सही); alert.getButton (AlertDialog.BUTTON_NEGATIVE) .requestFocus ();
सागर हटकर

2
धन्यवाद! यह एकमात्र समाधान था जिसने मेरे मामले में काम किया। हालांकि मैंने इसे थोड़ा अलग इस्तेमाल किया; मैंने फोकस सामग्री को एक RelativeLayoutयुक्त में रखा EditText
काक

1
Android P के साथ प्लेटफ़ॉर्म में निम्नलिखित परिवर्तन आ रहे हैं: "0 क्षेत्र के साथ दृश्य (या तो एक चौड़ाई या ऊँचाई 0 है) अब अधिक ध्यान देने योग्य हैं। इसके अतिरिक्त, गतिविधियाँ अब स्पर्श-मोड में प्रारंभिक फ़ोकस को निर्दिष्ट नहीं करती हैं। इसके बजाय, यह ऊपर है। यदि वांछित हो, तो आप प्रारंभिक ध्यान देने का अनुरोध करें। "
ऑस्ट्रियनडूड

28

दोनों सेट :focusableऔर :focusableInTouchModeसच्चे और कॉल करने के लिए requestFocus। यह ट्रिक करता है।


हाँ यह इसे ठीक करने का सही समाधान है। धन्यवाद एंडर्स
गोखानसरी

23

मुझे यह मेरे लिए सबसे अच्छा काम लगा।

AndroidManifest.xml में <activity> elementजोड़ेंandroid:windowSoftInputMode="stateHidden"

यह हमेशा गतिविधि को दर्ज करते समय कीबोर्ड छुपाता है।


आसान और साफ!
SHADOW.NET

महान ... यह बहुत प्रभावशाली है!
गुमराह

11

मैं सिर्फ कोड की इस पंक्ति को इसमें जोड़ता हूं onCreate():

this.getWindow().setSoftInputMode(
    WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);

समस्या सुलझ गयी।


Android 2.3.3 में काम करता है।
गौरव अग्रवाल

7

नीचे दिए गए कोड का उपयोग करें,

TableRow _tableRow =(TableRow)findViewById(R.id.tableRowMainBody);
tableRow.requestFocus();

वह काम करना चाहिए।


3

@ कहीं और मैंने ध्यान केंद्रित करने के लिए इसका उपयोग किया:

editText.clearFocus();

और यह मदद करता है


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