기본적으로 SearchView 를 사용 할 경우에는 (그림과 같은) Done 버튼이 정삭적으로 사용이 가능하지만
이 ActionBar의 경우는 여러가지 처리를 위해 커스텀으로 만들어졌습니다.
그래서 Done 버튼의 이벤트를 받기 위해서는 별도의 작업을 해줘야 사용이 가능합니다.
EditText (최신 대응은 AppCompatEditText) 를 상속받아 별도의 클래스를 만들어 줍니다.
public class CustomEditText extends AppCompatEditText { public CustomEditText(Context context) { super(context); } public CustomEditText(Context context, AttributeSet attrs) { super(context, attrs); } public CustomEditText(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } @Override public InputConnection onCreateInputConnection(EditorInfo outAttrs) { InputConnection conn = super.onCreateInputConnection(outAttrs); outAttrs.imeOptions &= ~EditorInfo.IME_FLAG_NO_ENTER_ACTION; return conn; } }
레이아웃 xml 에서 커스텀 eidtText를 정의합니다.
<com.myApplication.CustomEditText android:id="@+id/search_view" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:layout_weight="1" android:background="@android:color/transparent" android:gravity="center_vertical" android:hint="@string/txt_search" android:imeOptions="actionSearch" android:maxLines="1" android:paddingLeft="2dp" android:textColor="@color/colorActionBar" android:textColorHint="@color/colorActionBar" />
마지막으로 Java 코드 내에서
EditText search_view = (EditText) findViewbyId(R.id.search_view); search_view.setOnEditorActionListener(new TextView.OnEditorActionListener() { @Override public boolean onEditorAction(TextView textView, int keyCode, KeyEvent event) { Log.e("test","keyEvent "+keyCode); // TODO :: work for if(keyCode == event.KEYCODE_HOME){ loadAddress(); } return false; } });
'Android' 카테고리의 다른 글
[안드로이드] android canvas triangle, star, heart 예제 (TouchEvent) (0) | 2017.05.22 |
---|---|
[안드로이드] android contentProvider example (A앱 < B앱 db 접근) (1) | 2017.05.16 |
[안드로이드] Android studio vector image 사용하기 (0) | 2017.05.12 |
[안드로이드] App cash data 앱 캐시 지우기 예제 (1) | 2017.05.01 |
[안드로이드] Directory 생성, file list 가져오기 (0) | 2017.05.01 |