je suis nouveau sur Android et je me suis retrouvé coincé dans un projet que je trouve simple, mais qui me laisse perplexe. Le problème est que je ne sais pas trop comment personnaliser l’arrière-plan, la couleur d’entrée de texte, la couleur de l’icône de recherche en XML ou tout simplement leurs attributs. Pour le moment, je suis sur mon téléphone et je ne peux pas montrer mon code. Est-ce que quelqu'un me dit comment je peux le personnaliser? Peut-être me montrer un tutoriel que je peux suivre? Merci d'avance !!!!
Je vous suggère de regarder la réponse que j'ai donnée ici pour créer votre propre SearchBar.
Je n'arrive pas à comprendre la raison, mais je ne peux pas nommer la barre de recherche par défaut de Google. J'ai donc dû créer ma propre barre de recherche.
Voici comment j'ai fait:
Styling Search Voir sur Android (min21)
Si vous souhaitez implémenter un algorithme InstantSearch suivez ce grand auteur et son projet (regardez la réponse acceptée):
Comment filtrer un RecyclerView avec un SearchView
Si vous avez besoin d’aide supplémentaire, laissez un commentaire. Si la réponse vous a aidé à relire aussi ma réponse: P
UPDATE: Voici la mise en oeuvre par Google de la vue Recherche, pour vous donner plus d'informations: https://developer.Android.com/guide/topics/search/search-dialog.html
Bonne journée :)
Ajoutez ce code sur votre RelativeLayout
-
<Android.support.v7.widget.SearchView
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:background="@color/colorAsh"
Android:backgroundTint="@color/colorAsh"
Android:searchIcon="@drawable/ic_search"
Android:commitIcon="@drawable/ic_commit"
Android:searchHintIcon="@drawable/ic_search"
Android:closeIcon="@drawable/ic_close"
Android:goIcon="@drawable/ic_go">
</Android.support.v7.widget.SearchView>
N'oubliez pas de changer ces icônes.
Et suivez ceci SearchView pour connaître chaque option de SearchView
.
faites juste votre propre recherche, c’est très simple.
custom_searchview.xml
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:orientation="horizontal" Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:paddingLeft="8dp"
Android:paddingRight="8dp"
Android:paddingTop="4dp"
Android:paddingBottom="4dp"
Android:gravity="center_vertical">
<ImageView
Android:layout_width="20dp"
Android:layout_height="20dp"
Android:adjustViewBounds="true"
Android:src="@drawable/ic_search_white"/>
<EditText
Android:id="@+id/edt_search_text"
Android:layout_width="0dp"
Android:layout_height="wrap_content"
Android:layout_weight="1"
Android:inputType="text"
Android:imeOptions="actionSearch"
Android:hint="@string/by_name"
Android:paddingLeft="8dp"
Android:paddingRight="8dp"
Android:lines="1"
Android:textColorHint="@color/colorTextGrey"
Android:textColor="@color/white"
Android:textSize="14sp"
Android:background="@Android:color/transparent"/>
<ImageView
Android:id="@+id/iv_clear_text"
Android:layout_width="25dp"
Android:layout_height="25dp"
Android:adjustViewBounds="true"
Android:visibility="gone"
Android:src="@drawable/ic_clear"/>
</LinearLayout>
vous pouvez ensuite inclure cette mise en page dans votre fichier de mise en forme d'activité. Ceci est une mise en page simple qui comprend une "icône de recherche" suivie de EditText, suivie de "icône vide". L'icône en clair apparaît après que l'utilisateur a tapé du texte.
puis dans votre activité, vous devez écouter lorsque l'utilisateur clique sur la recherche sur le clavier et également écouter lorsque l'utilisateur saisit du texte pour afficher "icône vide"
/*search btn clicked*/
edtSearchText.setOnEditorActionListener(new TextView.OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
if (actionId == EditorInfo.IME_ACTION_SEARCH) {
performSearch();
return true;
}
return false;
}
});
/*hide/show clear button in search view*/
edtSearchText.addTextChangedListener(searchViewTextWatcher);
TextWatcher searchViewTextWatcher = new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
if(s.toString().trim().length()==0){
ivClearText.setVisibility(View.GONE);
} else {
ivClearText.setVisibility(View.VISIBLE);
}
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub
}
@Override
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub
}
};