공감 및 댓글은 포스팅 하는데 아주아주 큰 힘이 됩니다!! 포스팅 내용이 찾아주신 분들께 도움이 되길 바라며 더 깔끔하고 좋은 포스팅을 만들어 나가겠습니다^^
|
이번 포스팅에서는 간단하게 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() {
}
});
저는 아래처럼 사용하고 있습니다.
무언가 검색해야하는 앱이라면 유용하게 사용할 수 있을 것 같네요~