반응형
액티비티의 위쪽에 보이는 타이틀 부분과 옵션 메뉴는 액션바로 합쳐져 보이게 된다
액션바는 기본적으로 제목을 보여주는 타이틀의 기능을 하므로 앱의 제목을 보여줄 수 있으며 화면에 보이거나 보이지 않도록 만들 수 있다
ActionBar abar = getActionBar();
abar.show();
abar.hide();
setSubtitle 메소드를 사용하면 타이틀의 부제목을 달아줄 수 있다
디스플레이 옵션 상수
DISPLAY_USE_LOGO
홈 아이콘 부분에 로고 아이콘을 사용
DISPLAY_SHOW_HOME
홈 아이콘을 표시
DISPLAY_HOME_AS_UP
홈 아이콘에 뒤로 가기 모양의 < 아이콘을 같이 표시
DISPLAY_SHOW_TITLE
타이틀을 표시
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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"
tools:context=".MainActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!"
android:textSize="30sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="192dp"
android:text="액션바 아이콘 바꾸기"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.498"
app:layout_constraintStart_toStartOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
menu_main.xml
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/menu_refresh"
android:icon="@drawable/menu_refresh"
android:title="새로고침"
app:showAsAction="always"></item>
<item
android:id="@+id/menu_search"
android:icon="@drawable/menu_search"
android:title="검색"
app:showAsAction="always"></item>
<item
android:id="@+id/menu_settings"
android:icon="@drawable/menu_settings"
android:title="설정"
app:showAsAction="always"></item>
</menu>
MainActivity
package com.example.a31_sampleactionbar;
import androidx.appcompat.app.ActionBar;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
// package androidx.appcompat.app 안에 들어있는 클래스를 임포트
ActionBar abar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// xml 레이아웃에 들어있는 ActionBar 객체를 참조
abar = getSupportActionBar();
Button button = findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
abar.setLogo(R.drawable.home);
// 버튼을 클릭했을 때 액션바가 보이는 모양을 바꾸는 메소드
abar.setDisplayOptions(ActionBar.DISPLAY_SHOW_HOME | ActionBar.DISPLAY_USE_LOGO);
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
// 메뉴를 선택했을 때 처리하는 메소드
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int curId = item.getItemId();
switch (curId) {
case R.id.menu_refresh:
Toast.makeText(this, "새로고침 메뉴 선택", Toast.LENGTH_SHORT).show();
break;
case R.id.menu_search:
Toast.makeText(this, "검색 메뉴 선택", Toast.LENGTH_SHORT).show();
break;
case R.id.menu_settings:
Toast.makeText(this, "설정 메뉴 선택", Toast.LENGTH_SHORT).show();
break;
default:
break;
}
return super.onOptionsItemSelected(item);
}
}
메뉴 xml의 <item> 태그에 showAsAction 속성의 값으로 always, always | withText, never가 설정 가능하다
never로 값을 설정하면 액션바에 메뉴가 보이지 않게 된다
orderInCategorty 속성은 메뉴가 보이는 순서를 결정하며 101, 102, 103처럼 작은 숫자부터 순서대로 지정한다
반응형
'안드로이드' 카테고리의 다른 글
[에러] Installation failed due to: ''cmd package install-create .... (0) | 2021.10.20 |
---|---|
액션바에 검색창 만들기 (0) | 2021.10.20 |
액션바 (0) | 2021.10.19 |
한 화면에 2개의 프래그먼트 (0) | 2021.10.19 |
프래그먼트 (0) | 2021.10.18 |