Archives
Recent Posts
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
Today
Total
관리 메뉴

안드로이드 개발자의 창고

[41일차 Android] ActionBar 본문

Computer/Android

[41일차 Android] ActionBar

Wise-99 2023. 7. 1. 19:08

 

 

 

출처 : 안드로이드 앱스쿨 2기 윤재성 강사님 수업 PPT

 

 

 

📖 ActionBar

  • ActionBar는 Option Menu 구성 시 showAsAction 속성을 이용한다.

 

showAsAction

속성 설명
None 기본. ActionBar에 표시하지 않음
Always 무조건 ActionBar에 표시
ifRoom 공간이 허락할 경우 ActionBar에 표시
Icon ActionBar에 표시될 때 사용할 아이콘을 지정
withText 공간이 허락될 경우 아이콘과 함께 문자열을 표시

 

예제 코드

menu/main_menu.xml

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:android="http://schemas.android.com/apk/res/android">

    <item
        android:id="@+id/item1"
        android:title="메뉴1"
        app:showAsAction="always" />
    <item
        android:id="@+id/item2"
        android:icon="@android:drawable/ic_menu_call"
        android:title="메뉴2"
        app:showAsAction="ifRoom|withText" />
    <item
        android:id="@+id/item3"
        android:icon="@android:drawable/ic_menu_always_landscape_portrait"
        android:title="메뉴3"
        app:showAsAction="ifRoom" />
    <item
        android:id="@+id/item4"
        android:title="메뉴4"
        app:showAsAction="ifRoom" />
</menu>

 

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity" >

    <TextView
        android:id="@+id/textView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="TextView"
        android:textAppearance="@style/TextAppearance.AppCompat.Large" />
</LinearLayout>

 

MainActivity.kt

class MainActivity : AppCompatActivity() {

    lateinit var activityMainBinding: ActivityMainBinding

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        activityMainBinding = ActivityMainBinding.inflate(layoutInflater);
        setContentView(activityMainBinding.root)
    }

    // 옵션 메뉴 생성
    override fun onCreateOptionsMenu(menu: Menu?): Boolean {

        menuInflater.inflate(R.menu.main_menu, menu)

        return super.onCreateOptionsMenu(menu)
    }

    // 옵션 메뉴 선택 시 호출되는 메서드
    override fun onOptionsItemSelected(item: MenuItem): Boolean {

        when(item.itemId){
            R.id.item1 -> {
                activityMainBinding.textView.text = "메뉴1을 눌렀습니다"
            }
            R.id.item2 -> {
                activityMainBinding.textView.text = "메뉴2를 눌렀습니다"
            }
            R.id.item3 -> {
                activityMainBinding.textView.text = "메뉴3을 눌렀습니다"
            }
            R.id.item4 -> {
                activityMainBinding.textView.text = "메뉴4를 눌렀습니다"
            }
        }

        return super.onOptionsItemSelected(item)
    }
}

 

결과

메뉴 선택 화면 회전(ifRoom)

'Computer > Android' 카테고리의 다른 글

[41일차 Android] ActionBar Navigation  (0) 2023.07.01
[41일차 Android] ActionView  (0) 2023.07.01
[39일차 Android] Fargment  (0) 2023.07.01
[39일차 Android] Service  (0) 2023.06.29
[39일차 Android] Broadcast Receiver  (0) 2023.06.27