2017-11-03 3 views
-1

Ich werde versuchen zu erklären, obwohl mein Englisch ein bisschen schlecht ist.

Estoy utilizando MaterialSearchView de Miguel Katalanisch: MaterialSearchView

Ich bin neu in Stackoverflow und sie nicht lassen Sie mich Bilder hochladen. Ich werde versuchen, es zu erklären. Der Hauptbildschirm meiner Anwendung hat eine MaterialSearchView in der Toolbar. Nach dem Drücken des Suchsymbols, bringt es mich zum Textfeld, in dem Sie suchen können

Ich möchte ein Kamerasymbol rechts neben dem "X" des SerchView setzen.Hinzufügen Kamera-Symbol in SearchView auf Android

enter image description here

enter image description here

Kann mir jemand helfen? Oder teilen Sie mir eine andere Suchkomponente mit, mit der Sie bei der Suche Symbole in der Suchleiste hinzufügen können?

EDIT

Ich habe die Lösung. Es ist nicht der professionellste Weg, aber es ist gültig. Im SearchView-Steuerelement habe ich zwei Bilder, eins für das X, um den gesuchten Text zu löschen (das ursprüngliche Symbol bleibt hinter der Kamera) und ein anderes für die Kamera (beide unsichtbar).

Layout/app_bar_home.xml:

 <com.miguelcatalan.materialsearchview.MaterialSearchView 
      android:id="@+id/searchView" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      > 

      <ImageView android:id="@+id/imgClearSearch" 
       android:layout_width="20dp" 
       android:layout_height="20dp" 
       android:layout_gravity="right" 
       android:src="@drawable/ic_close_grease_small" 
       android:visibility="invisible" 
       android:layout_marginTop="18dp" 
       android:layout_marginRight="50dp" /> 

      <ImageView 
       android:id="@+id/imgCamera" 
       android:layout_width="30dp" 
       android:layout_height="30dp" 
       android:layout_gravity="right" 
       android:src="@drawable/ic_menu_camera" 
       android:visibility="invisible" 
       android:layout_marginTop="14dp" 
       android:layout_marginRight="8dp" 
       /> 
     </com.miguelcatalan.materialsearchview.MaterialSearchView> 

Dann wird in der Java-Klasse, in den Hörer, zeigen wir Bilder, wenn der Sucher angezeigt wird, und sie verstecken, wenn der Sucher versteckt.

//Creamos los listeners de los buscadores 
    searchView = (MaterialSearchView) findViewById(R.id.searchView); 
    searchView.setVoiceSearch(false); 
    searchView.setOnQueryTextListener(new MaterialSearchView.OnQueryTextListener() { 
     @Override 
     public boolean onQueryTextSubmit(String query) { 

      //Cuando pulsamos en buscar 
      String aa = ""; 

      return false; 
     } 

     @Override 
     public boolean onQueryTextChange(String newText) { 

      //Cuando teclemamos en el buscador 
      String aa = ""; 

      if (newText.length() > 20) 
       searchView.setQuery(newText.substring(0, 20), false); 

      return false; 
     } 
    }); 
    searchView.setOnSearchViewListener(new MaterialSearchView.SearchViewListener() { 
     @Override 
     public void onSearchViewShown() { 

      imgCamera.setVisibility(View.VISIBLE); 
      imgClearSearch.setVisibility(View.VISIBLE); 

      //ImageView searchClose = (ImageView) searchView.findViewById(android.support.v7.appcompat.R.id.search_close_btn); 
      //searchClose.setImageResource(R.drawable.ic_close_white); 
      Drawable closeIcon = getResources().getDrawable(R.drawable.ic_close_white); 
      searchView.setCloseIcon(closeIcon); 

      //Cuando mostramos el buscador 
      String aa = ""; 
     } 

     @Override 
     public void onSearchViewClosed() { 

      //Cuando cerramos el buscador (tras haber buscado) 
      String aa = ""; 
      imgCamera.setVisibility(View.INVISIBLE); 
      imgClearSearch.setVisibility(View.INVISIBLE); 
     } 
    }); 

Das einzige Problem ist, dass die X, die standardmäßig zu reinigen der Text der Sucher angezeigt wurde, noch zeigte, so habe ich einen kleinen Trick. Ich habe das standardmäßig angezeigte Icon durch ein weißes ersetzt, sodass es nicht sichtbar ist. Ich habe das auf der Linie setzen:

  Drawable closeIcon = getResources().getDrawable(R.drawable.ic_close_white); 
      searchView.setCloseIcon(closeIcon); 

Este es el resultado:

enter image description here

+0

Bitte zeigen Sie, was Sie schon versucht, und wie funktioniert es nicht. – Nebril

+0

Was soll ich tun, um meine eigene Frage als gelöst zu markieren? – BenjaminDIaz

Antwort

0

Ich habe die Lösung. Es ist nicht der professionellste Weg, aber es ist gültig. Im SearchView-Steuerelement habe ich zwei Bilder, eins für das X, um den gesuchten Text zu löschen (das ursprüngliche Symbol bleibt hinter der Kamera) und ein anderes für die Kamera (beide unsichtbar).

Layout/app_bar_home.xml:

 <com.miguelcatalan.materialsearchview.MaterialSearchView 
      android:id="@+id/searchView" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      > 

      <ImageView android:id="@+id/imgClearSearch" 
       android:layout_width="20dp" 
       android:layout_height="20dp" 
       android:layout_gravity="right" 
       android:src="@drawable/ic_close_grease_small" 
       android:visibility="invisible" 
       android:layout_marginTop="18dp" 
       android:layout_marginRight="50dp" /> 

      <ImageView 
       android:id="@+id/imgCamera" 
       android:layout_width="30dp" 
       android:layout_height="30dp" 
       android:layout_gravity="right" 
       android:src="@drawable/ic_menu_camera" 
       android:visibility="invisible" 
       android:layout_marginTop="14dp" 
       android:layout_marginRight="8dp" 
       /> 
     </com.miguelcatalan.materialsearchview.MaterialSearchView> 

Dann wird in der Java-Klasse, in den Hörer, zeigen wir Bilder, wenn der Sucher angezeigt wird, und sie verstecken, wenn der Sucher versteckt.

//Creamos los listeners de los buscadores 
    searchView = (MaterialSearchView) findViewById(R.id.searchView); 
    searchView.setVoiceSearch(false); 
    searchView.setOnQueryTextListener(new MaterialSearchView.OnQueryTextListener() { 
     @Override 
     public boolean onQueryTextSubmit(String query) { 

      //Cuando pulsamos en buscar 
      String aa = ""; 

      return false; 
     } 

     @Override 
     public boolean onQueryTextChange(String newText) { 

      //Cuando teclemamos en el buscador 
      String aa = ""; 

      if (newText.length() > 20) 
       searchView.setQuery(newText.substring(0, 20), false); 

      return false; 
     } 
    }); 
    searchView.setOnSearchViewListener(new MaterialSearchView.SearchViewListener() { 
     @Override 
     public void onSearchViewShown() { 

      imgCamera.setVisibility(View.VISIBLE); 
      imgClearSearch.setVisibility(View.VISIBLE); 

      //ImageView searchClose = (ImageView) searchView.findViewById(android.support.v7.appcompat.R.id.search_close_btn); 
      //searchClose.setImageResource(R.drawable.ic_close_white); 
      Drawable closeIcon = getResources().getDrawable(R.drawable.ic_close_white); 
      searchView.setCloseIcon(closeIcon); 

      //Cuando mostramos el buscador 
      String aa = ""; 
     } 

     @Override 
     public void onSearchViewClosed() { 

      //Cuando cerramos el buscador (tras haber buscado) 
      String aa = ""; 
      imgCamera.setVisibility(View.INVISIBLE); 
      imgClearSearch.setVisibility(View.INVISIBLE); 
     } 
    }); 

Das einzige Problem ist, dass die X, die standardmäßig zu reinigen der Text der Sucher angezeigt wurde, noch zeigte, so habe ich einen kleinen Trick. Ich habe das standardmäßig angezeigte Icon durch ein weißes ersetzt, sodass es nicht sichtbar ist. Ich habe das auf der Linie setzen:

  Drawable closeIcon = getResources().getDrawable(R.drawable.ic_close_white); 
      searchView.setCloseIcon(closeIcon); 

Ergebnis in meiner eigenen Frage

0

Okay, das Symbol Image ist, so können Sie verwenden:

  1. Suche. findViewById (id) (ID müsste reverse engineered sein)

  2. searchView.GetChildAt (int position whic h du musst raten); (Position sollte irgendwo zwischen 1-5 liegen)

Verwandte Themen