관리 메뉴

ruriruriya

[Android] μ•ˆλ“œλ‘œμ΄λ“œ - ActionBar menu μ‚¬μš©ν•˜λŠ” 방법 λ³Έλ¬Έ

πŸ€–Android

[Android] μ•ˆλ“œλ‘œμ΄λ“œ - ActionBar menu μ‚¬μš©ν•˜λŠ” 방법

루리야ㅑ 2024. 1. 2. 14:17
λ°˜μ‘ν˜•

Action BarλŠ” μ•ˆλ“œλ‘œμ΄λ“œ μ•±μ—μ„œ ν™”λ©΄ 상단에 μžˆλŠ” μ€‘μš”ν•œ UI μš”μ†Œμ΄λ‹€.
주둜 μ•±μ˜ 제λͺ©, μ•‘μ…˜ λ²„νŠΌ, 탐색 κΈ°λŠ₯ 등을 ν¬ν•¨ν•˜κ³  μžˆμ–΄ μ‚¬μš©μžμ—κ²Œ μ•±μ˜ κΈ°λŠ₯κ³Ό λ‚΄λΉ„κ²Œμ΄μ…˜μ„ μ œκ³΅ν•œλ‹€.

 

1. res-values-themes-themes.xml μˆ˜μ •

μŠ€νƒ€μΌ νƒœκ·Έμ—μ„œ parent 속성을
parent="Theme.MaterialComponents.DayNight.DarkActionBar" 둜 λ°”κΏ”μ€€λ‹€.

λ‚˜μ΄νŠΈ 버전도 λ˜‘κ°™μ΄ μˆ˜μ •ν•œλ‹€.

<resources xmlns:tools="http://schemas.android.com/tools">
    <!-- Base application theme. -->
    <style name="Base.Theme.ActionBar" parent="Theme.MaterialComponents.DayNight.DarkActionBar">
        <!-- Customize your light theme here. -->
        <!-- <item name="colorPrimary">@color/my_light_primary</item> -->
    </style>

    <style name="Theme.ActionBar" parent="Base.Theme.ActionBar" />
</resources>

λ‚˜μ΄νŠΈ 버전도 μˆ˜μ •

 

2. res-menu λ¦¬μ†ŒμŠ€ 디렉토리 생성

 

3. main.xml 메뉴 μ•„μ΄ν…œ μΆ”κ°€

메뉴 μ•„μ΄ν…œ 리슀트λ₯Ό μΆ”κ°€ν•œλ‹€.

μ—¬λŸ¬κ°œ μΆ”κ°€ν•  수 μžˆλ‹€.

 

4. Common Attributes  μˆ˜μ •

id, title, icon, showAsAction 등을 μˆ˜μ •ν•œλ‹€.

그럼 μ•„λž˜μ™€ 같이 μ•„μ΄μ½˜μ΄ μƒμ„±λœ 것을 확인할 수 μžˆλ‹€.

 

5. MainActivity.java

- onCreate ν•¨μˆ˜μ—μ„œ 타이틀을 μ„€μ •ν•œλ‹€.

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

    getSupportActionBar().setTitle("ν¬μŠ€νŒ… 리슀트");
}

 

- μ•‘μ…˜λ°”μ˜ 메뉴 μ•„μ΄μ½˜μ΄ λ‚˜μ˜€λ„λ‘ μ„€μ •ν•˜λŠ” ν•¨μˆ˜ onCreateOptionsMenu

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.main,menu);

    return true;
}

 

- μ•‘μ…˜λ°”μ˜ 메뉴 μ•„μ΄μ½˜ ν΄λ¦­ν•˜λ©΄, λ™μž‘ν•˜λŠ” ν•¨μˆ˜ onOptionsItemsSelected

@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {

    if(item.getItemId() == R.id.menuAdd){
        Intent intent = new Intent(MainActivity.this, AddActivity.class);
        launcher.launch(intent);
    }

    return super.onOptionsItemSelected(item);
}

 

λ°˜μ‘ν˜•