[안드로이드] 액션바(Actionbar)에 버튼 추가하기, 탭모드
[안드로이드] 액션바(Actionbar)
<액션바(Actionbar)>
* 액션바 - 단순히 제목만을 표시하거나 간단한 정보만을 표시
=> 애플리케이션과 사용자의 현재 위치 식별
=> 각종 메뉴 - 탐색메뉴, 단축메뉴
=> 다른 애플리케이션 사이의 내비게이션 지원
* 액션바의 출력 옵션 상수
1) DISPLAY_HOME_AS_UP : 홈 아이콘에 뒤로 가기 모양의 < 아이콘을 같이 표시
2) DISPLAY_SHOW_HOME : 홈 영역 활성화, 홈 아이콘 표시 여부 지정
3) DISPLAY_SHOW_TITLE : 타이틀 표시
4) DISPLAY_USE_LOGO : 로고 아이콘 사용
5) DISPLAY_SHOW_CUSTOM : 사용자 영역 활성화
실습1 - 액션바에 버튼(액션항목) 추가
: 버튼을 포함하는 XML 파일을 생성 한 후 ActionBar 클래스가 제공하는
setCustomView() 메소드를 통하여 액션바에 배치
setCustomView() 메소드를 통하여 액션바에 배치
- 앱의 메인화면 출력 -> activity_actionbardemo.xml(id가 body인 리니어레이아웃), ActionbarDemo.java
- 액션바 영역에서 버튼 레이아웃 -> button.xml
1) button.xml - 액션바에 추가할 버튼 항목
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent">
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/white"
android:text="흰 바탕"
android:onClick="onBtnClicked"/>
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/black"
android:text="검은 바탕"
android:onClick="onBtnClicked"/>
</LinearLayout>
2) ActionbarDemo.java
public class ActionbarDemo extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_actionbardemo);
//버튼 리소스를 뷰로 전개
View myButtonLayout = getLayoutInflater().inflate(R.layout.button, null);
//액션바의 인스턴스 생성
ActionBar ab = getSupportActionBar();
//액션바의 커스텀 영역에 버튼 뷰 추가
ab.setCustomView(myButtonLayout);
ab.setDisplayOptions(ActionBar.DISPLAY_SHOW_HOME |
ActionBar.DISPLAY_SHOW_TITLE | ActionBar.DISPLAY_SHOW_CUSTOM);
}
public void onBtnClicked(View view){
LinearLayout ll = (LinearLayout) findViewById(R.id.body);
switch (view.getId()){
case R.id.white:
ll.setBackgroundColor(Color.WHITE);
break;
case R.id.black:
ll.setBackgroundColor(Color.BLACK);
}
}
}
* 액션바 - 네비게이션모드
: 표준(디폴트, 리스트, 탭모드)
: 표준 이외에는 액션바가 제공하는 setNavigationMode() 메소드를 호출
* 액션바 - 탭모드
: 액션바에 탭메뉴를 추가
: 탭을 클릭할 때 발생하는 이벤트를 처리하기 위해 TabListener 인터페이스 구현 필요
-> onTabReselected(), onTabSelected(), onTabUnselected()
실습2 - 액션바의 탭모드(탭 클릭시 Toast 출력)
=> addTab() : 새로 생성한 탭을 액선바의 탭으로 지정
=> newTab() : 탭을 새로 생성
=> setTabListener() : 탭에 리스너를 등록하여 클릭 등의 이벤트를 처리
public class ActionbarDemo2 extends AppCompatActivity implements ActionBar.TabListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_actionbardemo);
ActionBar actionBar = getSupportActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
actionBar.addTab(actionBar.newTab().setText("Tab1").setTabListener(this));
actionBar.addTab(actionBar.newTab().setText("Tab2").setTabListener(this));
actionBar.addTab(actionBar.newTab().setText("Tab3").setTabListener(this));
}
@Override
public void onTabReselected(ActionBar.Tab tab, FragmentTransaction ft) {
Toast.makeText(this, tab.getText() + "선택됨", Toast.LENGTH_SHORT).show();
}
@Override
public void onTabSelected(ActionBar.Tab tab, FragmentTransaction ft) {
Toast.makeText(this, tab.getText() + "선택됨", Toast.LENGTH_SHORT).show();
}
@Override
public void onTabUnselected(ActionBar.Tab tab, FragmentTransaction ft) {
}
}
'안드로이드 > 뷰(View)' 카테고리의 다른 글
EditText (0) | 2018.01.17 |
---|---|
ListView 속성 아이템 구분선 (0) | 2018.01.17 |
Floating Action Button 구현 라이브러리 - Android L (0) | 2018.01.17 |
ListView에 마지막 divider (구분선) 넣기 (0) | 2018.01.17 |
TabView보다 이쁜 탭이 가능한 include 사용하기 (0) | 2018.01.17 |
[WebView] 뒤로가기 버튼 & 종료버튼 (0) | 2018.01.17 |
Android Webview tel & mailto link (0) | 2018.01.17 |
안드로이드/Android WebView 사용 하기 (0) | 2018.01.17 |