JooTC
android-logo-card-light-blue

[안드로이드/JAVA] SearchView 전체 영역을 터치하도록 설정하기

안드로이드의 SearchView를 사용하면 사용자에게 검색 인터페이스를 제공할 수 있습니다.

SearchView를 사용하여 검색을 하려면 뷰의 검색 아이콘을 터치(클릭)해야 합니다. 검색 아이콘을 터치하면 가상 키보드가 나타나는 등 입력이 가능한 상태로 전환하게 됩니다.

android-whole-searchview-clickable-1

여기까지는 좋은데 위 이미지 예시 처럼 우측의 넓은 공간을 터치하려 하면 아무런 반응이 없습니다. 검색을 할 때 마다 매번 왼쪽의 ‘아이콘 영역’을 누르는 것은 번거롭고 불편한 일이 아닐 수 없습니다.

그렇다면 나머지 부분을 터치했을 때도 검색을 할 수 있도록 입력 상태가 활성화 되게 할 수는 없을까요?

 

 

SearchView 전체 영역 터치하도록 설정하기


방법은 아주 간단합니다. 그저 onClick 메소드 내에 한 줄만 추가하면 됩니다.

먼저 SearchView를 구현하기 위해 메인 액티비티가 실행되기 위한 레이아웃 파일인 activity_main.xml 파일을 수정해보겠습니다.

대략 다음과 같이 SearchView를 만들어보겠습니다. 코드 내 android:background배경SearchView의 구분을 쉽게 하기 위해 넣은 배경색이므로 필수 입력 요소는 아닙니다.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:background="#CCC"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <SearchView
        android:id="@+id/searchForm"
        android:background="#FFF"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />
</LinearLayout>

이제 MainActivity.java 파일을 편집해보겠습니다.

public class MainActivity extends AppCompatActivity {

    private SearchView searchBar;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        searchBar = findViewById(R.id.searchForm);
        searchBar.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

            }
        });
    }
}

SearchView전체 영역을 클릭했을 때의 이벤트 처리를 위한 setOnClickListener 리스너를 추가해주었습니다. (검색 처리를 위한 내용은 이 포스트를 참고해보세요.)

리스너 안의 onClick 메소드에 다음 내용을 추가할 것입니다.

searchBar.setIconified(false);

위 실행문 대신에 다음 실행문을 사용해주어도 됩니다.

searchView.onActionViewExpanded();

결론적으로 다음과 같이 작성되어 있을 것입니다.

searchBar.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        searchView.setIconified(false);
    }
});

이제 앱을 실행해보고 실제로 동작하는지 확인해봅니다. 이제 어떤 영역을 선택해도 입력 상태로 전환 될 것입니다.

 

 

참고자료


구독
알림
guest

1 Comment
Inline Feedbacks
모든 댓글 보기
ㅁㅁ
ㅁㅁ
6 월 전에

잘되네요 ^^

1
0
이 포스트에 대한 의견을 남겨주세요!x