2016-09-23 2 views
0

Ich arbeite an einer Android-Anwendung und implementiert Searchview darin. Was ich die Schließen-Schaltfläche in der Suchansicht ausblenden soll, wenn es initialisiert wird und nur diese Schaltfläche anzeigen, wenn ich mit der Eingabe beginnen. Verstecke die Schließen-Schaltfläche von Searchview, wenn sie leer ist.Wie zu schließen Schaltfläche in Searchview ausblenden, wenn es leer ist Android

Ich habe dies wie folgt getan.

public void initializeSearchView(){ 

    SearchManager searchManager = (SearchManager)mContext.getSystemService(Context.SEARCH_SERVICE); 
    mSearchView.setSearchableInfo(searchManager.getSearchableInfo(((Activity)mContext).getComponentName())); 
    mSearchView.setIconifiedByDefault(true); 
    mSearchView.setIconified(false); 
    mSearchView.clearFocus(); 
    int searchImgId = mContext.getResources().getIdentifier("android:id/search_mag_icon", null, null); 
    ImageView searchIconView = (ImageView) mSearchView.findViewById(searchImgId); 
    if(searchIconView != null){ 
     searchIconView.setImageResource(R.drawable.ic_action_search); 
     LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(
       ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); 
     searchIconView.setLayoutParams(layoutParams); 
    } 
    int searchPlateId = mSearchView.getContext().getResources(). 
      getIdentifier("android:id/search_plate", null, null); 
    View searchPlate = mSearchView.findViewById(searchPlateId); 
    if (searchPlate != null) { 
     int searchTextId = searchPlate.getContext().getResources(). 
       getIdentifier("android:id/search_src_text", null, null); 
     final TextView searchText = (TextView) searchPlate.findViewById(searchTextId); 
     searchText.setHintTextColor(ContextCompat.getColor(mContext, R.color.gray_stroke_color)); 
     mSearchView.setQueryHint("Search"); 
     int searchCloseBtnId = searchPlate.getContext().getResources(). 
       getIdentifier("android:id/search_close_btn", null, null); 
     searchCloseBtn = (ImageView) searchPlate.findViewById(searchCloseBtnId); 
     searchCloseBtn.setVisibility(View.GONE); 
     searchCloseBtn.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       searchText.setText(""); 
       mSearchView.clearFocus(); 
      } 
     }); 
    } 
    mSearchView.setOnQueryTextListener(this); 
} 

Ich habe die Sichtbarkeit GONE auf die Schließen-Schaltfläche zum Zeitpunkt der Initialisierung gesetzt Suche aber es funktioniert nicht. Wie kann ich das erreichen, bitte helfen Sie, wenn jemand hier eine Idee hat.

Vielen Dank im fortgeschrittenen Stadium.

Antwort

0
searchCloseBtn.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       //searchText.setText(""); 
       //mSearchView.clearFocus(); 
       mSearchView.setIconified(false); 
      } 
     }); 
0

Zunächst einmal sollte Gone-Parameter funktionieren. Vielleicht falsche Ansicht, die Sie geholt, versuchen Sie einfach zu bedienen:

ImageView closeButton = 
(ImageView)mSearchView.findViewById(R.id.search_close_btn); 

Sie können auch versuchen LayoutParams für View einzustellen:

LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(0, 0); 
closeBut.setLayoutParams(layoutParams); 
+0

Sichtbarkeit GONE arbeitet zum ersten Mal, wenn ich Searchview initialisiere, aber genauso wie der Searchview den Fokus erhält, wird es stattdessen angezeigt, es sollte nur sichtbar sein, wenn ich irgendetwas in Searchview eintippe. Bitte helfen Sie, wenn Sie wissen, wie ich das erreichen kann. :) –

+0

@PrithnirajNicyone Ah ja, so SearchView handle Aktion und steuern dieses Verhalten für Sichtbarkeit .... Haben Sie versucht, LayoutParams? – GensaGames

0

den Trick versuchen:

if (searchCloseBtn != null) { 
    searchCloseBtn.setEnabled(false); 
    searchCloseBtn.setImageDrawable(getResources().getDrawable(R.drawable.transparent)); 
} 

weil die Suche Resets die Sichtbarkeit der Schaltfläche zum Schließen, wenn der Benutzer mit SearchView interagiert

+0

Ich habe es versucht und die Schließen-Schaltfläche wird ausgeblendet, wenn Suchansicht initialisiert wurde, aber die Schließen-Schaltfläche wird nicht angezeigt, auch wenn ich einen Test in searchView eintippe. Es sollte die Schaltfläche auch zeigen, wenn ich Abfrage in Suchansicht eintippe. –

Verwandte Themen