반응형
SearchView : 검색할 수 있는 메뉴
위와 같이 앱의 상단에 검색할 수 있는 메뉴를 만들 수 있습니다.
상단 메뉴 만들기 예제
1. 메뉴 xml 만들기
-> res 폴더 아래에 menu 폴더(directory)를 만들고 "search_menu" 이름의 xml파일을 만들어줍니다.
search_menu.xml에 메뉴 아이템 코드를 만들어 줍니다.
search_menu.xml 코드
1
2
3
4
5
6
7
8
9
|
<?xml version="1.0" encoding="utf-8"?>
xmlns:app="http://schemas.android.com/apk/res-auto">
<item android:id="@+id/search"
android:title="@string/search"
android:icon="@android:drawable/ic_menu_search"
app:showAsAction="collapseActionView|ifRoom"
app:actionViewClass="android.widget.SearchView" />
</menu>
|
cs |
2.activity_main.xml 코드 만들기
searchView가 어떻게 동작하는지를 Log가 아닌 화면에 보이도록 구성하겠습니다.
text와 button으로 구성되있으며 일단 복사 붙혀넣기 하시면 됩니다.
activity_main.xml 코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
>
<TextView
android:id="@+id/txtsearch"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="검색식 : "
android:textSize="25dp"/>
<TextView
android:id="@+id/txtresult"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="검색결과"
android:textSize="25dp"/>
<TextView
android:id="@+id/txtstatus"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="현재 상태 : 축소됨"
android:textSize="25dp"/>
<Button
android:id="@+id/btnexpand"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="mOnClick"
android:text="확장"
/>
<Button
android:id="@+id/btncollapse"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="mOnClick"
android:text="축소"/>
</LinearLayout>
|
cs |
3.MainActivity
setOnActionExpandListener - 메뉴의 확장과 축소 이벤트 관리
setOnQueryTextListener - 검색,변경 이벤트 관리
MainActivity 코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
|
package com.example.dud57.testsearchview;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.SearchView;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
MenuItem mSearch;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
//메뉴 생성하는 onCreateOptionsMenu
@Override
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
//search_menu.xml 등록
MenuInflater inflater=getMenuInflater();
inflater.inflate(R.menu.search_menu,menu);
mSearch=menu.findItem(R.id.search);
//메뉴 아이콘 클릭했을 시 확장, 취소했을 시 축소
mSearch.setOnActionExpandListener(new MenuItem.OnActionExpandListener() {
@Override
public boolean onMenuItemActionExpand(MenuItem item) {
TextView text=(TextView)findViewById(R.id.txtstatus);
text.setText("현재 상태 : 확장됨");
return true;
}
@Override
public boolean onMenuItemActionCollapse(MenuItem item) {
TextView text=(TextView)findViewById(R.id.txtstatus);
text.setText("현재 상태 : 축소됨");
return true;
}
});
//menuItem을 이용해서 SearchView 변수 생성
SearchView sv=(SearchView)mSearch.getActionView();
//확인버튼 활성화
sv.setSubmitButtonEnabled(true);
//SearchView의 검색 이벤트
sv.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
//검색버튼을 눌렀을 경우
@Override
public boolean onQueryTextSubmit(String query) {
TextView text = (TextView)findViewById(R.id.txtresult);
text.setText(query + "를 검색합니다.");
return true;
}
//텍스트가 바뀔때마다 호출
@Override
public boolean onQueryTextChange(String newText) {
TextView text = (TextView)findViewById(R.id.txtsearch);
text.setText("검색식 : "+newText);
return true;
}
});
return true;
}
// 검색 확장,축소를 버튼으로 생성
public void mOnClick(View v) {
switch (v.getId()) {
case R.id.btnexpand:
mSearch.expandActionView();
break;
case R.id.btncollapse:
mSearch.collapseActionView();
break;
}
}
} |
cs |
4. 결과
setSubmitButtonEnabled(true)를 하면 X버튼 옆에 검색 버튼을 만들 수 있습니다.
검색을 하고 있을 경우 "검색식"의 text가 계속 바뀌게 됩니다.
검색버튼을 눌렀을 경우 "~검색합니다" 가 바뀌게 됩니다.
참고
반응형
'프로그래밍 > Android' 카테고리의 다른 글
(Android) SwipeLayout - 옆으로 넘기는 레이아웃 (0) | 2018.12.21 |
---|---|
(Android) R 에러 (R.layout.~ Error) (0) | 2018.12.21 |
(Android) SharedPreferences - 작은 데이터베이스 (0) | 2018.12.20 |
(Android) Plugin Error (플러그인 에러) (0) | 2018.12.20 |
(Android) SQLiteOpenHelper - 데이터베이스 관련 작업 (0) | 2018.12.20 |