안드로이드

안드로이드 Materialsearchview 라이브러리 소개!

알통몬_ 2018. 4. 13. 15:33
반응형


공감 및 댓글은 포스팅 하는데

 아주아주 큰 힘이 됩니다!!

포스팅 내용이 찾아주신 분들께 

도움이 되길 바라며

더 깔끔하고 좋은 포스팅을 

만들어 나가겠습니다^^

 


이번 포스팅에서는 간단하게 MaterialDesign 이 적용된

searchView 라이브러리를 소개합니다.


Materialsearchview

https://github.com/MiguelCatalan/MaterialSearchView

위 링크로 가시면 어떤 라이브러리 인지 정확히 아실 수 있는데요.

간단히 말해 카카오톡을 켜면상단에 항상 searchbar 가 있죠?

그 searchview 같은 라이브러리입니다.



사용방법

dependencies {} 블록에 추가

implementation 'com.miguelcatalan:materialsearchview:1.4.0'

저는 개인적으로 채팅앱을 만들면서 친구 검색 부분에 사용했습니다.


.xml 구성 방법

<android.support.v7.widget.Toolbar
android:id="@+id/mainToolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="@color/colorPrimary"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:contentInsetStart="0dp">
</android.support.v7.widget.Toolbar>
<com.miguelcatalan.materialsearchview.MaterialSearchView
android:id="@+id/searchFriendsView"
android:layout_width="match_parent"
android:layout_height="wrap_content" />

가장 기본적인 사용방법인데요.

Toolbar를 먼저 만들고 그 바로 아래에 

MaterialSearchView를 만들면 됩니다.

*주의하실 점

- layout의 가장 아래에 선언되어 있어야 적용이 제대로 됩니다.

- 그리고 적용이 제대로 되면 툴바에 앱 이름이 표시되는데요. 그 이름을 없애고 싶을 경우는

아래 코드를 Activity에 적용하시면 됩니다.

setSupportActionBar(binding.mainToolbar);
if (getSupportActionBar() != null) {
getSupportActionBar().setTitle(null);


res 아래에 menu 디렉토리를 만들고 

그 안에 mesu_search.xml 파일을 만들고 안에 아래 코드를 넣어주세요.

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/actionSearch"
android:icon="@drawable/ic_action_action_search"
android:orderInCategory="100"
android:title="@string/app_name"
app:showAsAction="always" />
</menu>


Activity 에서 onCreateOptionsMenu 메서드를 오버라이딩해줍니다.

@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_search, menu);
MenuItem item = menu.findItem(R.id.actionSearch);
binding.searchFriendsView.setMenuItem(item);
return true;
}


searchView에서 주로 사용되는 리스너는 아래 2가지가 있습니다.

binding.searchFriendsView.setOnQueryTextListener(new MaterialSearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
return false;
}

@Override
public boolean onQueryTextChange(String newText) {
Log.d("onQueryTextChange", newText);
return false;
}
});
binding.searchFriendsView.setOnSearchViewListener(new MaterialSearchView.SearchViewListener() {
@Override
public void onSearchViewShown() {
}

@Override
public void onSearchViewClosed() {

}
});


저는 아래처럼 사용하고 있습니다.


무언가 검색해야하는 앱이라면 유용하게 사용할 수 있을 것 같네요~

반응형