티스토리 뷰

반응형

화면 상단에 배치되어 있는 부분을 의미합니다.

 

 

XML 수정하기

 

먼저 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/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="text"
        android:textAppearance="@style/TextAppearance.AppCompat.Large" />

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

</LinearLayout>

 

 

menu 만들기

 

 

Resource type을 Menu로 설정하고 메뉴를 만들어줍니다.

 

그리고 xml을 아래와 같이 수정합니다.

 

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

    <item
        android:id="@+id/item1"
        android:title="1" />
    <item
        android:id="@+id/item2"
        android:title="2" />
    <item
        android:id="@+id/item3"
        android:title="3" />
    <item
        android:id="@+id/item4"
        android:title="4" />
    <item
        android:id="@+id/item5"
        android:title="5" />
    <item
        android:id="@+id/item6"
        android:title="6" />
    <item
        android:id="@+id/item7"
        android:title="7" />
</menu>

 

 

 

코드 작성하기

 

MainActivity를 아래와 같이 수정해줍니다.

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
    }

    override fun onCreateOptionsMenu(menu: Menu?): Boolean {
        menuInflater.inflate(R.menu.main_menu, menu)
        return true
    }

    override fun onOptionsItemSelected(item: MenuItem): Boolean {

        when(item.itemId) {
            R.id.item1 -> textView1.text = "1번 클릭"
            R.id.item2 -> textView1.text = "2번 클릭"
            R.id.item3 -> textView1.text = "3번 클릭"
            R.id.item4 -> textView1.text = "4번 클릭"
            R.id.item5 -> textView1.text = "5번 클릭"
            R.id.item6 -> textView1.text = "6번 클릭"
            R.id.item7 -> textView1.text = "7번 클릭"
        }

        return super.onOptionsItemSelected(item)
    }
}

 

onCreateOptionsMenu에 메뉴를 지정해주고

onOptionsItemSelected에 id에 따른 동작을 지정해줍니다.

 

 

실행을 하게 되면,

 

 

오른쪽 상단에 액션바 모양이 뜨고 

 

 

위와 같이 동작을 하는 것을 확인할 수 있습니다.

 

 

 

showAsAction 설정하기

 

action bar에는 showAsAction 값을 지정할 수 있습니다.

메뉴가 어떻게 보일지 설정하는 것입니다.

 

<item
    android:id="@+id/item1"
    app:showAsAction="always"
    android:title="1" />

 

위와 같이 설정을 하면 아래의 화면처럼 보이게 됩니다.

 

 

 

showAsAction의

 

  • never - 메뉴를 Action Bar에 표시하지 않습니다.
  • always - 항상 Action Bar에 표시합니다.
  • ifRoom - 공간이 되면 Action Bar에 표시합니다.
  • withText - title로 지정한 문자열과 함께 표시합니다.
  • collapseActionView - 접었다 펼쳤다 하면서 뷰를 표시할 수 있습니다.

 

 

아이콘 지정하기

 

아이콘도 지정을 할 수 있습니다.

 <item
    android:id="@+id/item1"
    app:showAsAction="always"
    android:icon="@drawable/ic_launcher_foreground"
    android:title="1" />
 

 

위와 같이 설정을 하게 되면 아래와 같이 보이게 됩니다.

 

 

 

actionViewClass 적용하기

 

action bar에서는 actionViewClass를 적용할 수도 있습니다.

 

아래는 actionViewClass를 통해 검색 창을 구현하는 것입니다.

 

 

<item
    android:id="@+id/item1"
    app:showAsAction="always"
    android:icon="@drawable/ic_launcher_foreground"
    android:title="1"
    app:actionViewClass="androidx.appcompat.widget.SearchView" />

 

위와 같이 actionViewClass로 SearchView를 구현하면 아래와 같이 동작하는 것을 구현할 수 있습니다.

 

 

 

 

 

만약 showAsAction 값에 collapseActionView를 추가하면 아래와 같이 동작합니다.

app:showAsAction="always|collapseActionView"

 

 

반응형

'알려주는 이야기 > 안드로이드' 카테고리의 다른 글

안드로이드 권한  (0) 2020.08.19
안드로이드 notification 예제  (0) 2020.08.18
안드로이드 context menu  (0) 2020.08.16
안드로이드 popup menu  (0) 2020.08.15
안드로이드 option menu  (0) 2020.08.14
댓글