본문 바로가기

안드로이드/코드

[안드로이드] 프래그먼트 액션바 메뉴 만들기 (Fragment ActionBar Menu)

반응형

 

1. res 폴더에 menu 폴더 생성

actionbar1

 

2. menu 폴더에 xml 파일 생성

 

menu/menu_list.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/tab1"
        app:showAsAction="always"
        android:icon="@drawable/main_list_icon"
        android:iconTint="@drawable/item_color"
        android:enabled="true"
        android:checked="true"
        android:title="@string/list"
        />
</menu>

 

-보여지는 방식

app:showAsAction="always"

always - 항상 보이도록 표시

never - 액션바에 표시 하지 않음 (기본값)

ifRoom - 액션바에 아이콘이 표시될 공간이 있을 경우

withText - 텍스트와 함께 표시 ( 텍스트는 title을 의미합니다 )

 

-메뉴의 아이콘 이미지 설정
android:icon="@drawable/main_list_icon"

drawable 폴더에 아이콘 이미지를 넣어두고 원하는 이미지의 경로를 설정하면 됩니다

 

-아이콘 선택시 동작 설정
android:iconTint="@drawable/item_color"

아이콘을 터치했을때 색상을 변경하고 싶을때 사용합니다. (Ex-BottomNavigationView 사용시 선택된 메뉴 아이콘 색상 변경, 버튼 클릭시 색상 변경)

 

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_checked="true" android:color="@color/colorYellow"/>
    <item android:color="#FFFFFF"/>
</selector>

<item android:state_checked="true" android:color="@color/colorYellow"/>  - 아이콘 터치시 색상

<item android:color="#FFFFFF"/> - 기본값

 

-선택 여부 설정

android:checked="true"

기본값으로 선택이 되어 있도록 하고 싶다면 true로 설정하면 됩니다.

그렇지 않다면 추가할 필요는 없습니다.

 

- 아이콘 제목 설정
android:title="@string/list"

아이콘의 제목을 설정한다.

리스트, 설정, 더보기 등등의 아이콘의 제목을 설정하는 부분입니다.

 

3. onCreateView 

 

public class ViewMoreFragment extends Fragment {
    ViewGroup viewGroup;
    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        viewGroup = (ViewGroup) inflater.inflate(R.layout.viewmorefragment,container,false);
        setHasOptionsMenu(true);
        return viewGroup;
    }
}

 

setHasOptionsMenu(true); 

프래그먼트가 옵션메뉴를 가질 수 있도록 설정해줘야합니다.  

 

 

4. onCreateOptionsMenu 오버라이드

 

@Override
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
        super.onCreateOptionsMenu(menu,inflater);
        inflater.inflate(R.menu.menu_list,menu);
    }

 

inflater.inflate(R.menu.menu_list);

2번에서 만들었던 xml 파일을 설정해줍니다.

ctrl + o 를 누르고 oncreateoptionsmenu를 검색하시면 확인 하실 수 있습니다.

 

 

5. onOptionsItemSelected 오버라이드

 

@Override
    public boolean onOptionsItemSelected(MenuItem item) {
        int curId = item.getItemId();

        switch (curId){
            case tab1:
		//tab1 메뉴 아이콘 선택시 이벤트 설정
                break;
            default:
                break;
        }
        return super.onOptionsItemSelected(item);
    }

 

메뉴의 아이콘을 선택 했을때의 이벤트를 설정해주면 됩니다.

int curId = item.getItemId();  (2번 xml파일에서 설정했던 id값)

 

 

반응형