Coding/Android(kotlin)
액션 바(Action Bar)
코딩;
2022. 2. 7. 17:39
화면 상단에 액션바를 만들어보자
1. app - src - res -> 새로만들기 - 경로 - menu 생성
2. res폴더 내에 생성한 menu폴더에 새로만들기 - XML - App Actions XML File -> menu_main.xml 생성
3. menu_main.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">
<!-- ActionBar -->
<item
android:id="@+id/menu_search"
android:icon="@android:drawable/ic_menu_search"
android:title="검색"
app:showAsAction="always|withText" />
<item
android:id="@+id/menu_chat"
android:icon="@android:drawable/sym_action_chat"
android:title="채팅"
app:showAsAction="always" />
<item
android:id="@+id/menu_email"
android:icon="@android:drawable/sym_action_email"
android:title="이메일"
app:showAsAction="ifRoom" />
<item
android:id="@+id/action_setting"
android:title="세팅"
app:showAsAction="never" />
</menu>
위의 코드 중 이 코드는 안드로이드에서 지원되는 아이콘을 불러와준다.
android:icon="@android:drawable/ic_menu_search"
android:icon="@android:drawable/sym_action_chat"
android:icon="@android:drawable/sym_action_email"
4. AndroidManifest.xml - meta-data 부분 수정
<meta-data
android:name="com.google.android.actions"
android:resource="@menu/menu_main"/>
5. activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"/>
</androidx.constraintlayout.widget.ConstraintLayout>
6. MainActivity.kt
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
//supportActionBar?.setDisplayShowTitleEnabled(false)
}
override fun onCreateOptionsMenu(menu: Menu?): Boolean {
menuInflater.inflate(R.menu.menu_main, menu)
return super.onCreateOptionsMenu(menu)
//return false
}
override fun onOptionsItemSelected(item: MenuItem): Boolean {
// println("onOptionsItemSelected~~~!")
val textView:TextView = findViewById<TextView>(R.id.textView)
when(item?.itemId){
R.id.menu_search -> textView.text = "검색 클릭"
R.id.menu_chat -> textView.text = "채팅 클릭"
R.id.menu_email -> textView.text = "이메일 클릭"
R.id.action_setting -> textView.text = "세팅 클릭"
}
return super.onOptionsItemSelected(item)
}
}
상단 주석 2줄을 풀고 return값을 false로 변경해주면 액션바가 보이지 않게 된다.
이렇게 하면 textView가 액션바 내에 메뉴들을 누를때 마다 그에 맞는 텍스트를 보여준다.