다음 메소드를 활용하여 액션바의 출력 옵션을 변경하거나 꾸밀 수 있다.
void setDisplayOptions(int options [, int mask])
int getDisplayOptions()
지원 가능한 옵션의 종류는 다음과 같다.
옵션 |
값 |
설명 |
DISPALY_USE_LOGO |
0x01 |
앱아이콘 대신에 로고를 표시한다. |
DISPLAY_SHOW_HOME |
0x02 |
홈 요소를 보여준다. |
DISPLAY_HOME_AS_UP |
0x04 |
왼쪽 화살표 모양의 Up버튼을 보여준다. |
DISPLAY_SHOW_TITLE |
0x08 |
타이틀과 서브 타이틀을 보여준다. |
DISPLAY_SHOW_CUSTOM |
0x10 |
커스텀 뷰를 보여준다. |
또는 다음의 옵션을 개별적으로 지정하는 메소드를 호출해도 결과는 동일하다.
void setDisplayUseLogoEnabled(boolean useLogo)
void setDisplayShowHomeEnabled(boolean showHome)
void setDisplayHomeAsUpEnabled(boolean showTitle)
void setDisplayShowCustomEnabled(boolean showCustom)
액티비티의 로고 아이콘은 매니페스트에 logo 속성으로 지정한다.
<activity android:name="패키지명.클래스명"
android:label="DisplayOption"
android:logo="@drawable/androboy"/>
또는 다음 메소드로 로고를 변경 할 수 있다.
void setLogo(int resId)
void setLogo(Drawable logo)
커스텀 뷰는 액션바에 별도의 뷰를 추가로 하나 더 배치하는 것이며 로고 아이콘과 액션 항목 사이에 나타난다.
다음 메소드로 커스텀 뷰를 배치한다.
void setCustomView(int resId)
void setCustomView(View view [, ActionBar.LayoutParams layoutParams])
View getCustomView()
다음 메소드로 서브 타이틀을 하나 더 붙일 수 있다.
void setSubtitle(int resId)
void setSubtitle(CharSequence subtitle)
다음 예제는 실제 옵션 값을 체크 해본다.
아래와 같이 파일을 구성한다.
displayoption.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<CheckBox
android:id="@+id/chkuselogo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="USE LOGO" />
<CheckBox
android:id="@+id/chkshowhome"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="SHOW HOME" />
<CheckBox
android:id="@+id/chkhomeasup"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="HOME AS UP" />
<CheckBox
android:id="@+id/chkshowtitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="SHOW TITLE" />
<CheckBox
android:id="@+id/chkshowcustom"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="SHOW CUSTOM" />
</LinearLayout>
actionbarmenu.xml
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:title="하나"
android:icon="@android:drawable/ic_menu_add"
android:showAsAction="always|withText"
/>
<item android:title="둘"
android:icon="@android:drawable/ic_menu_edit"
android:showAsAction="ifRoom"
/>
<item android:title="셋"
android:showAsAction="ifRoom"
/>
<item android:title="넷"
android:showAsAction="ifRoom"
/>
<item android:title="다섯"
android:showAsAction="ifRoom"
/>
<item android:title="여섯" />
</menu>
DisplayOption.java
package com.example.ch21_displayoption;
import android.app.ActionBar;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.CompoundButton;
public class DisplayOption extends Activity {
CheckBox mChkUseLogo;
CheckBox mChkShowHome;
CheckBox mChkHomeAsUp;
CheckBox mChkShowTitle;
CheckBox mChkShowCustom;
ActionBar mActionBar;
Button mCustom;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.displayoption);
mChkUseLogo = (CheckBox)findViewById(R.id.chkuselogo);
mChkUseLogo.setOnCheckedChangeListener(mListener);
mChkShowHome = (CheckBox)findViewById(R.id.chkshowhome);
mChkShowHome.setOnCheckedChangeListener(mListener);
mChkHomeAsUp = (CheckBox)findViewById(R.id.chkhomeasup);
mChkHomeAsUp.setOnCheckedChangeListener(mListener);
mChkShowTitle = (CheckBox)findViewById(R.id.chkshowtitle);
mChkShowTitle.setOnCheckedChangeListener(mListener);
mChkShowCustom = (CheckBox)findViewById(R.id.chkshowcustom);
mChkShowCustom.setOnCheckedChangeListener(mListener);
mActionBar = getActionBar();
mCustom = new Button(this);
mCustom.setText("Custom");
mActionBar.setCustomView(mCustom);
mActionBar.setSubtitle("subtitle");
int option = mActionBar.getDisplayOptions();
//개별 옵션 상태를 조사하기위해 다음과같이 비트연산을 해야한다.
mChkUseLogo.setChecked((option & ActionBar.DISPLAY_USE_LOGO) != 0);
mChkShowHome.setChecked((option & ActionBar.DISPLAY_SHOW_HOME) != 0);
mChkHomeAsUp.setChecked((option & ActionBar.DISPLAY_HOME_AS_UP) != 0);
mChkShowTitle.setChecked((option & ActionBar.DISPLAY_SHOW_TITLE) != 0);
mChkShowCustom.setChecked((option & ActionBar.DISPLAY_SHOW_CUSTOM) != 0);
}
public boolean onCreateOptionsMenu(Menu menu){
super.onCreateOptionsMenu(menu);
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.actionbarmenu, menu);
return true;
}
//체크박스 리스너
CheckBox.OnCheckedChangeListener mListener =
new CheckBox.OnCheckedChangeListener(){
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
// TODO Auto-generated method stub
switch(buttonView.getId()){
case R.id.chkuselogo:
mActionBar.setDisplayUseLogoEnabled(isChecked);
break;
case R.id.chkshowhome:
mActionBar.setDisplayShowHomeEnabled(isChecked);
break;
case R.id.chkhomeasup:
mActionBar.setDisplayHomeAsUpEnabled(isChecked);
break;
case R.id.chkshowtitle:
mActionBar.setDisplayShowTitleEnabled(isChecked);
break;
case R.id.chkshowcustom:
mActionBar.setDisplayShowCustomEnabled(isChecked);
break;
}
}
};
}
실행 화면
'프로그래밍 > 안드로이드' 카테고리의 다른 글
안드로이드 - 압축 파일 사용하기 (0) | 2015.11.05 |
---|---|
안드로이드 - 파일 탐색기 만들기 (2) | 2015.11.04 |
안드로이드 - 하드웨어 가속 기능 (0) | 2015.10.25 |
안드로이드 - 액션 모드(ActionMode) 다루기 (1) | 2015.10.25 |
안드로이드 - DialogFragment에 스타일과 테마 지정하기 (0) | 2015.10.24 |
안드로이드 - 프래그먼트 대화상자를 액티비티 안에 배치하기 (0) | 2015.10.12 |
안드로이드 - DialogFragment 로 대화상자 만들기 (0) | 2015.10.11 |
안드로이드 - 내비게이션 탭(Navigation Tab) (0) | 2015.10.04 |