2016-07-16 18 views
13

मैं SearchView से onResume() में फोकस और टेक्स्ट को हटाना चाहता हूं।SearchView से फ़ोकस कैसे निकालें?

मैंने searchView.clearFocus() की कोशिश की लेकिन यह काम नहीं कर रहा है।

यह मेरा एक्सएमएल कोड है:

<SearchView 
    android:id="@+id/searchView" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_alignBottom="@+id/toolbar" 
    android:layout_alignTop="@+id/toolbar" 
    android:layout_centerVertical="true" 
    android:layout_marginBottom="4dp" 
    android:layout_marginTop="4dp" 
    android:iconifiedByDefault="false" 
    android:paddingLeft="16dp" 
    android:paddingRight="16dp" /> 
+0

कैसे यह काम नहीं कर रहा है? किसी प्रकार की त्रुटि के कारण या कुछ भी नहीं होता है? कृपया अधिक वर्णनात्मक हो ... – Vucko

+0

अपना कोड दोस्त दिखाएं :) – tinku

+0

@Vucko वास्तव में यह कोई त्रुटि नहीं दिखा रहा है और कर्सर नहीं हटाता है। –

उत्तर

20

में इस कोड को आप अपनी जड़ लेआउट onResume() में android:focusableInTouchMode विशेषता और है कि View पर ध्यान देने के साथ अनुरोध फ़ोकस करने योग्य सेट कर सकते हैं।

उदाहरण के लिए:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/root_layout" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    android:focusableInTouchMode="true"> 

    <SearchView 
     android:id="@+id/search_view" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:iconifiedByDefault="false"/> 

</LinearLayout> 

और फिर अपने Activity में:

private View rootView; 
private SearchView searchView; 

// ... 

@Override 
protected void onCreate(Bundle savedInstanceState) { 

    // ... 

    rootView = findViewById(R.id.root_layout); 
    searchView = (SearchView) findViewById(R.id.search_view); 
} 

@Override 
protected void onResume() { 
    super.onResume(); 

    searchView.setQuery("", false); 
    rootView.requestFocus(); 
} 
2

अपने onResume विधि

if (searchView != null) { 
    searchView.setQuery("", false); 
    searchView.clearFocus(); 
    searchView.onActionViewCollapsed(); 
} 
+0

यह मेरे फोकस को अक्षम कर रहा है लिस्टनर जो मैं नहीं चाहता, मैं चाहता हूं कि जब भी उस पर टैप वापस आना चाहिए। और जब टुकड़ा फिर से लोड हो जाता है तो इसे हटा देना चाहिए। –

+0

आपका प्रश्न ऐसा नहीं था जो आपने अभी समझाया है। (मैं SearchView से SearchView में फोकस और टेक्स्ट को हटाना चाहता हूं() मैंने searchView.clearFocus() की कोशिश की, लेकिन यह काम नहीं कर रहा है।) – Masum

+0

क्षमा करें:/लेकिन धन्यवाद! मदद के लिए। –

0

सरलतम में कोड की इस पंक्ति का उपयोग करें (और मुझे लगता है, केवल 100% काम कर रहे) समाधान करने के लिए, है एक अदृश्य LinearLayout बनाएँ। यह LinearLayoutEditText से फ़ोकस प्राप्त करेगा।

0

लिखें onResume()

searchView.setText("");  
    this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);  
6

जब गतिविधियों में माता पिता के लेआउट पर जाएँ, और fragment में भी भी framelayout में ऐसा ही करते। बस इस विशेषता जोड़ें:

android:focusableInTouchMode="true" 
0

मैं था बस कुछ अन्य viewgroup को फोकस अनुरोध और यह SearchView से फोकस हटा दिया।

0

मैं सिर्फ का उपयोग android:focusable="false"

<SearchView 
     android:layout_width="match_parent" 
     android:id="@+id/search" 
     android:paddingLeft="8dp" 
     android:paddingRight="8dp" 
     android:focusable="false" 
     android:iconifiedByDefault="false" 
     android:layout_height="wrap_content"> 
</SearchView> 
संबंधित मुद्दे