본문 바로가기
안드로이드 스튜디오 앱 개발/개념 안드로이드 스튜디오

안드로이드 스튜디오 타이틀바 버튼(메뉴 아이템)들 추가하기 (menu item) [Android Studio]

by 망댕이 2023. 6. 30.
반응형

오늘은 타이틀 바에 메뉴 아이템을 추가시켜 해당 아이템 아이콘을 타이틀 바에 띄우는 작업을 알아보도록 하겠습니다.

일단 menu의 디렉토리를 만들어 그 안에 타이틀 바에 넣을 메뉴 아이템 xml 파일을 만들어주도록 합니다.

 

//activity_menu.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_1"
        android:title="뒤로가기"
        android:icon="@android:drawable/ic_menu_close_clear_cancel"
        app:showAsAction="always"/>
    <item
        android:id="@+id/menu_2"
        android:title="도움말"
        android:icon="@android:drawable/ic_dialog_info"
        app:showAsAction="always"/>
    <item
        android:id="@+id/menu_3"
        android:title="공유"
        android:icon="@android:drawable/ic_menu_share"
        app:showAsAction="always"/>

</menu>

 

위처럼 3개의 아이템을 만들어줍니다.

x 아이콘의 뒤로 가기 버튼, 도움말 아이콘의 도움말 버튼, 공유 아이콘의 공유 버튼을

생성했으면 아래처럼 디자인 패널에서 이렇게 3가지가 상단 타이틀 바에 띄게 됩니다.

 

 

이 xml 파일을 가지고 이 아이콘들을 사용할 화면의 java 파일로 이동해 줍니다.

 

public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.activity_menu, menu);
    return true;
}

​위 코드를 이용하여 activity_menu.xml 파일을 inflate 시켜주면 아래와 같이 아까 우리가 만든 menu의 3개 아이콘이 타이틀 바에 그대로 적용됩니다.

 

 

그리고 각 버튼들을 눌렀을 때 실행할 코드는 onOptionItemSelected() 안에

아이템의 id에 따른 switch 함수를 이용하여 id 별로 case를 작성해 주시면 됩니다.

//MainActivity.java

--생략--

    @Override
    public boolean onOptionsItemSelected(@NonNull MenuItem item) {
        switch (item.getItemId()){
            case R.id.menu_1:{
                Intent intent = new Intent(getApplicationContext(), MainActivity.class);
                startActivity(intent);

                finish();
            }
        }
        return super.onOptionsItemSelected(item);
    }

 

//MainActivity.java 전체코드

public class PastQActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_past);

        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
        //전체화면으로 작업표시줄 없애기
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
        //가로화면 전환 방지
        AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO);
        //다크모드 방지


        Toolbar past_Toolbar = findViewById(R.id.past_toolbar);
        setSupportActionBar(past_Toolbar);
        getSupportActionBar().setTitle("액션바");
    }

    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_menu, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(@NonNull MenuItem item) {
        switch (item.getItemId()){
            case R.id.menu_1:{
                Intent intent = new Intent(getApplicationContext(), MainActivity.class);
                startActivity(intent);

                finish();
            }
        }
        return super.onOptionsItemSelected(item);
    }
}
반응형