반응형
https://recipes4dev.tistory.com/92
imeActionId, imeOptions에 대한 설명
https://stackoverflow.com/questions/23211761/actionlayout-on-menuitem-does-nothing
안드로이드 스튜디오로 xml 파일을 작업할 때, actionLayout 타이핑 시 자동 완성이
android:actionLayout으로 된다. app:actionLayout으로 수정해야 한다
app/res/menu/menu_main.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/menu_refresh"
android:icon="@drawable/menu_refresh"
android:title="새로고침"
app:showAsAction="always"></item>
<item
android:id="@+id/menu_search"
android:orderInCategory="102"
android:title="검색"
app:actionLayout="@layout/search_layout"
app:showAsAction="always|withText"></item>
<item
android:id="@+id/menu_settings"
android:icon="@drawable/menu_settings"
android:title="설정"
app:showAsAction="always"></item>
</menu>
search_layout.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="검색 : "
android:textColor="#ffad8745"
android:textSize="16sp" />
<EditText
android:id="@+id/editText"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:layout_marginLeft="4dp"
android:imeActionId="1337"
android:imeOptions="actionDone"
android:inputType="text"></EditText>
</LinearLayout>
이 xml 레이아웃을 액션바에 넣어서 보여주려면 액션바에 추가된 메뉴 아이템 중 하나가 화면에 보일 때 이 레이아웃이 보이게 설정해야한다
MainActivity
package com.example.a32_sampleactionbar2;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// xml로 정의된 메뉴 정보를 인플레이션하여 메모리에 로딩
getMenuInflater().inflate(R.menu.menu_main, menu);
// 메뉴 아이템 중에서 검색을 위해 정의한 아이템을 뷰 객체로 참조
View v = menu.findItem(R.id.menu_search).getActionView();
if (v != null) {
EditText editText = v.findViewById(R.id.editText);
if (editText != null) {
editText.setOnEditorActionListener(new TextView.OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
Toast.makeText(getApplicationContext(), "입력됨", Toast.LENGTH_LONG).show();
return true;
}
});
}
}
return true;
}
}
반응형
'안드로이드' 카테고리의 다른 글
상단 탭 만들기 (0) | 2021.10.20 |
---|---|
[에러] Installation failed due to: ''cmd package install-create .... (0) | 2021.10.20 |
액션바 아이콘 바꾸기 (0) | 2021.10.19 |
액션바 (0) | 2021.10.19 |
한 화면에 2개의 프래그먼트 (0) | 2021.10.19 |