타이틀바, 액션바, 툴바.. 뭐 이런 저런 명칭이 많은 곳.

용어 정리는 다음에 한번 차이에 대해서 정리를 해야겠지만,

현재 나는 이 타이틀 바에 버튼을 넣어서 액션바로서 사용을 하고싶으니,

추가하는 방법을 서술 하도록하겠다.


처음 프로젝트를 만들어서 basic으로 시작을 하게 된다면



아무것도 없는 화면에 위에 보면 'Title' 이 적혀 있는 이 부분이 타이틀 바이다.

이 상태에서 옆에 버튼을 추가 해서 액션바(?)로 사용을 하고 싶다면,


먼저, menu 폴더를 생성하고 menu.xml을 생성을 해준다.

 ( 아무 것도 없는 기본 빈창을 했다면 menu가 없을 것이다.)



그리고 그 안에 내용을 추가하는데

<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">

<item android:id="@+id/action_btn1"
android:title="버튼1"
app:showAsAction="always" />
<item android:id="@+id/action_btn2"
android:title="버튼2"
app:showAsAction="never" />
<item android:id="@+id/action_btn3"
android:text="action_btn3"
android:title="버튼3"
app:showAsAction="collapseActionView" />
<item android:id="@+id/action_btn4"
android:title="버튼4"
app:showAsAction="ifRoom"/>
<item android:id="@+id/action_btn5"
android:title="버튼5"
app:showAsAction="withText"/>

</menu>


이라고 추가를 하면 된다.

원하는 수 만큼 item을 추가하고, 표출 되는 방식은 

app:showAsAction=""

에서 "" 사이에 alway, never, ifRoom, withText, collapseActionView  이 있으며 이 차이는


alway

 아이템을 항상(always) 타이틀 바에 표시 됨. 

 never와 ifRoom보다 우선되며, 공간이 없으면 표시되지 않음.

 never

 아이템을 액션바의 액션으로 표시하지 않고(never) 오버플로우 메뉴에 바로 표시.

 ifRoom

 만약 공간이 있다면(ifRoom)의 액션으로 표시하고, 공간이 없다면 오버플로우 메뉴에 표시.

 withText

 아이템을 액션으로 표시할 때 텍스트와 같이(withText) 표시. 

   단, 아이콘과 텍스트를 같이 표시할 공간이 있는 경우에만 텍스트 표시.

 collapseActionView  

 아이템에 커스텀 액션 뷰가 지정된 경우, 축소된 형태로 표시.


정도의 차이인데 본인이 원하는 방식으로 고르면 되겠다.

menu를 추가 했다면,  그 다음엔 java라면 .java파일에, kotlin이라면 .kt에 다음을 추가한다.


JAVA

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


Kotlin

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


그러고 난뒤 화면을 확인해 본다면, 화면에 버튼이 추가 된것을 확인이 가능하다.



그리고 이를 사용하려면 클릭 이벤트도 추가를 해줘야하는데,

이건 방금 쓴 파일에서 그대로 이어 붙여서


JAVA

@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle presses on the action bar items
switch (item.getItemId()) {
case R.id.action_btn1:
playBtn();
return true;
case R.id.action_btn2:
stopBtn();
return true;
default:
return super.onOptionsItemSelected(item);
}
}


Kotlin

override fun onOptionsItemSelected(item: MenuItem): Boolean {
// Handle presses on the action bar items
when(item.itemId){
R.id.action_btn1 -> { return palyBtn() }
R.id.action_btn2 -> { return stopBtn() }
else -> {return super.onOptionsItemSelected(item)}


}
}


식으로 형식을 잡아서 만들면 된다.

+ Recent posts