본문 바로가기
앱 만들기/안드로이드 study

옵션 메뉴 만들기

by 나도처음이야 2022. 7. 12.
반응형

상태표시줄에 옵션 메뉴를 만들어 보겠습니다.

옵션메뉴를 선택하면, 화면이 옵션메뉴에 따라 색상이 변경됩니다.

옵션 메뉴

1. 옵션메뉴를 XML로 구성하기 위해서, res-menu 폴더를 만듭니다.

res 폴더에서 마우스 오른쪽 버튼을 누르고 New->Android Resource Directory 를 선택 후, Resource type 를 menu 로 선택하고 폴더를 만듭니다. 폴더는 res 디렉토리 밑에 menu 라고 생깁니다.

2. menu 폴더에 들어갈 menu.xml 파일 작성하기.

메뉴 폴더에서 마우스 오른쪽 버튼을 선택->New->Menu Resour File 을 선택합니다.

이름을 정하고 OK 버튼을 누릅니다. 해당 xml 파일이 menu 폴더 밑에 생깁니다.

하기 처럼 메뉴를 구성합니다.

<?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/blue"
        android:icon="@drawable/blue"
        android:title="파랑색"
        app:showAsAction="always" />
    <item
        android:id="@+id/green"
        android:icon="@drawable/green"
        android:title="녹색"
        app:showAsAction="always" />
    <item
        android:id="@+id/red"
        android:icon="@drawable/red"
        android:title="레드"
        app:showAsAction="always" />
    <item
        android:id="@+id/orange"
        android:icon="@drawable/orange"
        android:title="오렌지"
        app:showAsAction="never" />
</menu>

4개의 옵션메뉴를 구성했습니다.

app:showAsAction="never" 라고 주면, 화면에 나타나지 않고 더보기 메뉴(:')를 선택시 텍스트 메뉴로 보여집니다.

옵션메뉴 화면 구성은 완료되었습니다.

이제는 옵션메뉴가 코드상에서 동작 하도록 만들어 볼 차례입니다.

 

3. 옵션메뉴 구동 코드 작성하기

옵션메뉴는 Activity 에서 두개의 함수를 오버라이딩 해야합니다.

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    super.onCreateOptionsMenu(menu);
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.menu,menu);
    return true;
}

onCreateOptionsMenu 는 옵션메뉴를 생성하는 함수 입니다.

getMenuInflater()를 통해 메뉴화면을 인플레이트 시켜줍니다. XML 화면을 메모리상에 객체화 하여 올리는 작업을 뜻합니다. 

 

두번째, onCreateOptionsMenu 는 옵션메뉴의 이벤트 액션을 처리해 주는 함수입니다.

@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
    switch(item.getItemId()) {
        case R.id.blue:
            linearLayout.setBackgroundColor(Color.BLUE);
            break;
        case R.id.green:
            linearLayout.setBackgroundColor(Color.GREEN);
            break;
        case R.id.red:
            linearLayout.setBackgroundColor(Color.RED);
            break;
        case R.id.orange:
            linearLayout.setBackgroundColor(Color.parseColor("#ffa500"));
            break;
        default:
            break;
    }
    return super.onOptionsItemSelected(item);
}

옵션 메뉴에 따라 구현 기능을 넣어주면 됩니다.

위에서는 메인화면의 색상을 변경토록 했습니다.

orange 색상의 경우 Color.parseColor() 함수의 인자값으로 #RGB 색상코드 값을 넣었습니다.

해당 내용은 하기 안드로이드 개발자 사이트를 참고드립니다.

public class MainActivity extends AppCompatActivity {

    LinearLayout linearLayout;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        linearLayout = findViewById(R.id.LinearLayout);
    }

옵션메뉴는 하나의 액티비티의 하부에서 동작하는 메뉴입니다.

다음은, 각각의 View 에서 동작을 하는 Context 메뉴를 만들어 보겠습니다.

감사합니다.

반응형

댓글