1. 액션바 옵션메뉴 추가하기
(1) res 디렉토리에 'menu' 디렉토리 생성. * 이름은 꼭 menu로 해야 메뉴 레이아웃 생성 가능.
(2) menu 디렉토리에 menu_main.xml 파일 생성.
<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:title="새로고침"
android:icon="@mipmap/ic_launcher"
app:showAsAction="always"/>
<item
android:id="@+id/menu_search"
android:title="검색"
android:icon="@mipmap/ic_launcher"
app:showAsAction="always"/>
<item
android:id="@+id/menu_settings"
android:title="설정"
android:icon="@mipmap/ic_launcher"
app:showAsAction="always"/>
</menu>
(3) 메인 액티비티에 onCreateOptionsMenu() 메소드 오버라이드.
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
(4) 옵션 메뉴 클릭 이벤트 처리
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// 메뉴아이템 클릭시 호출, 파라미터는 선택된 메뉴아이템
int curId = item.getItemId();
switch (curId) {
case R.id.menu_refresh:
Toast.makeText(this, "새로고침 메뉴 클릭됨.", Toast.LENGTH_SHORT).show();
break;
case R.id.menu_search:
Toast.makeText(this, "검색 메뉴 클릭됨.", Toast.LENGTH_SHORT).show();
break;
case R.id.menu_settings:
Toast.makeText(this, "설정 메뉴 클릭됨.", Toast.LENGTH_SHORT).show();
break;
default:
break;
}
return super.onOptionsItemSelected(item);
}
2. 액션바에 custom action view 추가하기.
(1) 추가할 옵션 레이아웃 만들기. (search_layout.xml)
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<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" />
</LinearLayout>
(2) menu_main.xml 변경
<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:title="새로고침"
android:icon="@mipmap/ic_launcher"
app:showAsAction="always"/>
<item
android:id="@+id/menu_search"
android:title="검색"
android:icon="@mipmap/ic_launcher"
app:showAsAction="always"
app:actionLayout="@layout/search_layout"/>
<item
android:id="@+id/menu_settings"
android:title="설정"
android:icon="@mipmap/ic_launcher"
app:showAsAction="always"/>
</menu>
3. 액션바 없애기
- 첫번째 방법 : manifest.xml theme : AppTheme -> styles.xml 에서 바꾸기
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
</resources>
- 두번째 방법 : 메인액티비티 onCreate() 메소드에서 없애기
ActionBar actionBar = getSupportActionBar();
actionBar.hide();
+ 추가
android: 접두어는 android SDK에 포함된 속성에 붙여주는 것이고, app: 접두어는 외부 라이브러리(appcompat-v7)에 포함된 속성에 붙이는 것이다.
출처 : 부스트코스 강의
'Android > Basic' 카테고리의 다른 글
[Android] ViewPager + Tab (0) | 2018.06.25 |
---|---|
[Android] Time to String 및 시간순으로 정렬하기 (0) | 2018.06.22 |
[Android] startActivityForResult() 활용 예제 (0) | 2018.05.18 |
[Android] Permission (0) | 2018.05.17 |
[Android] Broadcast receiver 예제 (6) | 2018.05.16 |