¾È±Ô °øºÎ¹æ

Android > ActionBar ¸¸µé±â

µî·ÏÀÏ : 2017-07-05 18:50 Á¶È¸¼ö : 53,203

¾Èµå·ÎÀ̵å 3.0, Çã´ÏÄÄ(Honeycomb)¿¡¼­´Â ÅÂºí¸´ ´Ü¸»¿¡ ÃÖÀûÈ­µÈ ÄÄÆ÷³ÍÆ®µéÀÌ ¸¹ÀÌ Ãß°¡µÇ¾ú´Âµ¥¿ä,

ÇÁ·¡±×¸ÕÆ®(Fragment)¿Í ÇÔ²² Çã´ÏÄÄ¿¡¼­ Ãß°¡µÈ ´ëÇ¥ÀûÀÎ UI ÄÄÆ÷³ÍÆ® Áß Çϳª°¡ ¹Ù·Î ¾×¼Ç¹Ù(Action bar)ÀÔ´Ï´Ù.

¾×¼Ç¹Ù´Â ±âÁ¸ ¾Èµå·ÎÀÌµå ¾ÖÇø®ÄÉÀ̼ÇÀÇ Å¸ÀÌƲ¹Ù(Title bar)¸¦ ´ëüÇÏ´Â ÄÄÆ÷³ÍÆ®·Î, ±âÁ¸ ŸÀÌƲ¹Ù°¡ ´Ü¼øÈ÷

Á¦¸ñ¸¸À» Ç¥½ÃÇϰųª °£´ÜÇÑ Á¤º¸¸¸À» Ç¥½ÃÇÒ ¼ö ÀÖ´ø °Í¿¡ ¹ÝÇØ ¾×¼Ç¹Ù´Â Á¦¸ñ Ç¥½Ã »Ó¸¸ ¾Æ´Ï¶ó ¸Þ´º Á¦°ø, ¾×¼Ç

¾ÆÀÌÅÛ(Action item)À» ÅëÇÑ ´ÜÃà ¸Þ´º Á¦°ø, ÅÇ Áö¿ø µî ´Ù¾çÇÑ ±â´ÉÀ» Æ÷ÇÔÇÏ°í ÀÖ½À´Ï´Ù. ´ÙÀ½Àº ÀüÇüÀûÀÎ ¾×¼Ç¹ÙÀÇ ¸ð½ÀÀ» º¸¿©ÁÝ´Ï´Ù.

¾×¼Ç¹Ù¸¦ Ç¥½ÃÇÏ·Á¸é?

¾Èµå·ÎÀ̵å 3.0 ÀÌÇÏ ¹öÀüÀ¸·Î ÀÛ¼ºµÈ ¾ÖÇø®ÄÉÀÌ¼Ç (¸Å´ÏÆ佺Ʈ¿¡ Min SDK Version / Target SDK VersionÀÌ 11 ÀÌÇÏÀÎ °æ¿ì)À»

¾Èµå·ÎÀ̵å 3.0ÀÌ Å¾ÀçµÈ ´Ü¸»±â¿¡¼­ ½ÇÇàÇÏ¸é ¾×¼Ç¹Ù ´ë½Å ±âÁ¸ÀÇ Å¸ÀÌƲ¹Ù°¡ ±×´ë·Î Ç¥½ÃµË´Ï´Ù.

¶§¹®¿¡, ±âÁ¸ Ç÷§Æû ¹öÀüÀ» Áö¿øÇÔ°ú µ¿½Ã¿¡ ¾×¼Ç¹Ùµµ Ç¥½ÃµÇµµ·Ï ÇÏ·Á¸é ¸Å´ÏÆ佺ƮÀÇ Target SDK VersionÀ» 11 ÀÌ»óÀ¸·Î ¼öÁ¤ÇØ¾ß ÇÕ´Ï´Ù.



¾×¼Ç¹Ù¿Í ¸Þ´º(OptionsMenu), ±×¸®°í ¾×¼Ç ¾ÆÀÌÅÛ(Action item)

¾×¼Ç¹Ù¿Í ¸Þ´º´Â 뗼·¹¾ß ¶¿ ¼ö ¾ø´Â °ü°èÀÔ´Ï´Ù.

¾Èµå·ÎÀ̵å 3.0 ÀÌ»óÀÌ Å¾ÀçµÈ ´Ü¸»±â¸¦ óÀ½ Á¢ÇÏ°Ô µÇ¸é ¸Þ´ºÅ°°¡ ¾ø¾î ´çȲÇÏ´Â ºÐµéÀÌ ²Ï ÀÖ½À´Ï´Ù.

¹°·Ð ±âÁ¸ Ç÷§Æû ¹öÀüÀ» Ÿ±êÀ¸·Î ÀÛ¼ºµÈ ¾ÖÇø®ÄÉÀ̼ÇÀ» ½ÇÇàÇßÀ» ¶§´Â ¸Þ´º¸¦ È£ÃâÇÒ ¼ö ÀÖµµ·Ï ÇÏ´Ü¿¡ ¸Þ´ºÅ°°¡ »ý±âÁö¸¸,

¾Èµå·ÎÀ̵å 3.0À» Ÿ±êÀ¸·Î ÀÛ¼ºµÈ ¾ÖÇø®ÄÉÀ̼ǿ¡¼­´Â ¸Þ´ºÅ°¸¦ ãÀ» ¼ö ¾øÀ» °ÍÀÔ´Ï´Ù.

±×·¸´Ù¸é, ¸Þ´º´Â °ú¿¬ ¾îµð¿¡ Ç¥½ÃµÇ´Â °ÍÀϱî¿ä? ´äÀº ÀÇ¿Ü·Î °¡±î¿î °÷¿¡ ÀÖ½À´Ï´Ù. ¹Ù·Î ¾×¼Ç¹ÙÀÔ´Ï´Ù.

¾×¼Ç¹Ù´Â ¿©·¯ ¿ªÇÒÀ» ÇÏÁö¸¸, °¡Àå ÁÖµÈ ¿ªÇÒÀº ¸Þ´º¸¦ Ç¥½Ã ±â´ÉÀÔ´Ï´Ù.

±âÁ¸ ¹öÀüÀ» Ÿ±êÀ¸·Î ÀÛ¼ºµÈ ¾ÖÇø®ÄÉÀ̼ÇÀÇ Å¸±êÀ» ¾Èµå·ÎÀ̵å 3.0 ÀÌ»óÀ¸·Î º¯°æÇÑ ÈÄ ´Ù½Ã ½ÇÇàÇغ¸¸é ´ÙÀ½°ú °°ÀÌ ¾×¼Ç¹Ù

¿ìÃø ±¸¼®¿¡ ¸Þ´º ¹öÆ°ÀÌ Ç¥½ÃµÇ´Â °ÍÀ» È®ÀÎÇÒ ¼ö ÀÖ½À´Ï´Ù.



¾Èµå·ÎÀ̵å 3.0ºÎÅÍ´Â ¸Þ´º°¡ ¾×¼Ç¹ÙÀÇ ¿À¹öÇÃ·Î¿ì ¸Þ´º(´­·¶À» ¶§ ¸®½ºÆ®·Î ³ªÅ¸³ª´Â ¸Þ´º)¿¡ Ç¥½ÃµÇ¸ç,

¸Þ´º Ç׸ñ Áß ºó¹øÇÑ »ç¿ëÀÌ ¿¹»óµÇ´Â Ç׸ñÀº ¾×¼Ç¹Ù¿¡ ¹Ù·Î Ç׸ñÀÌ ³ëÃâµÇµµ·Ï ÇÒ ¼ö ÀÖ½À´Ï´Ù.

ÀÌ·¸°Ô ¿À¹öÇÃ·Î¿ì ¸Þ´º°¡ ¾Æ´Ñ ¾×¼Ç¹Ù¿¡ ¹Ù·Î ³ëÃâµÇ´Â Ç׸ñÀ» ¾×¼Ç ¾ÆÀÌÅÛ(Action item)À̶ó ÇÕ´Ï´Ù.

ÀÏ¹Ý ¸Þ´º Ç׸ñÀ» ¾×¼Ç ¾ÆÀÌÅÛÀ¸·Î Ç¥½ÃµÇµµ·Ï ÇÏ´Â ¹æ¹ýÀº Å©°Ô µÎ °¡ÁöÀÔ´Ï´Ù. Çϳª´Â ¸Þ´º XMLÀ» »ç¿ëÇÏ´Â ¹æ¹ý, ´Ù¸¥ Çϳª´Â

ÄÚµå·Î ±¸ÇöÇÏ´Â ¹æ¹ýÀÔ´Ï´Ù. µÎ °¡Áö ¹æ¹ý ¸ðµÎ µ¿ÀÏÇÑ °á°ú¸¦ ³»´Â µ¥´Â ¹®Á¦°¡ ¾øÁö¸¸, Äڵ带 ÅëÇØ ±¸ÇöÇÏ´Â °æ¿ì SDK ¹öÀü¿¡ ¸ÂÃß¾î
º°µµ·Î Äڵ带 ÀÛ¼ºÇØ¾ß ÇϹǷΠXMLÀ» ÅëÇØ ¼³Á¤ÇÏ´Â ¹æ¹ýÀ» ±ÇÀåÇÕ´Ï´Ù.

XML¿¡¼­ ¸Þ´º Ç׸ñÀÌ ¾×¼Ç ¾ÆÀÌÅÛÀ¸·Î Ç¥½ÃµÇµµ·Ï ¼³Á¤ÇÏ·Á¸é ´ÙÀ½°ú °°ÀÌ android:showAsAction ¼Ó¼ºÀ» ÁöÁ¤ÇÏ¸é µË´Ï´Ù.

´ÙÀ½ ¿¹Á¦´Â ¸Þ´º Ç׸ñ¿¡ ´ëÇØ °ø°£ÀÌ ÀÖÀ» °æ¿ì ¸Þ´º Ç׸ñÀÇ ÅؽºÆ®¸¦ µ¿½Ã¿¡ Ç¥½ÃÇϵµ·Ï ±¸ÇöÇÏ°í ÀÖ½À´Ï´Ù.


menu Æú´õÀÇ [menu.xml]
	<?xml version="1.0" encoding="utf-8"?>
	<menu xmlns:android="http://schemas.android.com/apk/res/android">
		<item
			android:showAsAction="ifRoom|withText"
			android:id="@+id/item1"
			android:icon="@android:drawable/ic_menu_add"
			android:title="Add"
		/>
		<item
			android:id="@+id/item2"
			android:showAsAction="always"
			android:title="Action item with icon"
			android:icon="@android:drawable/ic_menu_search"
		/>
		<item
			android:title="Normal item"
			android:id="@+id/item3"
		android:showAsAction="never"/>
	</menu>



android:showAsAction ¼Ó¼ºÀ¸·Î ÁöÁ¤ÇÒ ¼ö ÀÖ´Â Ç׸ñÀº ´ÙÀ½°ú °°½À´Ï´Ù.

ifRoom : ¾×¼Ç ¾ÆÀÌÅÛÀ» Ç¥½ÃÇÒ ¼ö ÀÖ´Â °ø°£ÀÌ ÀÖ´Ù¸é ¾×¼Ç ¾ÆÀÌÅÛÀ» Ç¥½ÃÇÕ´Ï´Ù. 
never : Ç×»ó ¾×¼Ç ¾ÆÀÌÅÛÀ¸·Î Ç¥½ÃÇÏÁö ¾Ê½À´Ï´Ù. (±âº»°ª)
withText : ¸Þ´º Ç׸ñÀÇ ¾ÆÀÌÄÜ°ú ¸Þ´º Ç׸ñÀÇ ÅؽºÆ®¸¦ ÇÔ²² ¾×¼Ç ¾ÆÀÌÅÛÀ¸·Î Ç¥½ÃÇÕ´Ï´Ù.
always : Ç×»ó ¾×¼Ç ¾ÆÀÌÅÛÀ¸·Î Ç¥½ÃÇÕ´Ï´Ù.


¸Þ´º Ç׸ñÀ̳ª ¾×¼Ç Ç׸ñÀ» ¼±ÅÃÇßÀ» ¶§ ¼öÇàÇÒ ÀÛ¾÷ ±¸ÇöÀº ±âÁ¸°ú µ¿ÀÏÇÏ°Ô onOptionsItemSelected() ¸Þ¼­µå¿¡¼­ ó¸®ÇÕ´Ï´Ù.

¾Èµå·ÎÀ̵å 3.0ºÎÅÍ´Â ¾×¼Ç¹Ù ÁÂÃø¿¡ ¾ÖÇø®ÄÉÀÌ¼Ç ¾ÆÀÌÄÜÀÌ ±âº»ÀûÀ¸·Î Ç¥½ÃµÇ´Âµ¥, ÀÌ ¾ÆÀÌÄÜÀ» ´­·¶À» ¶§ ó¸®ÇÒ µ¿ÀÛ ¶ÇÇÑ µ¿ÀÏÇÑ

¸Þ¼­µå¿¡¼­ ó¸®ÇÒ ¼ö ÀÖ½À´Ï´Ù. ¾ÖÇø®ÄÉÀÌ¼Ç ¾ÆÀÌÄÜÀÇ id´Â android.R.id.homeÀ¸·Î, onOptionsItemSelected()¿¡¼­ ÀÌ id¸¦ »ç¿ëÇÏ¿©

ÀûÀýÇÑ ÀÛ¾÷À» ¼öÇàÇϵµ·Ï ±¸ÇöÇÒ ¼ö ÀÖ½À´Ï´Ù.

°¢ ¸Þ´º Ç׸ñÀ» º¸¸é °¢°¢ ´Ù¸¥ ¼Ó¼ºÀ» Àû¿ëÇÑ °ÍÀ» ¾Ë ¼ö ÀÖ½À´Ï´Ù.

ù ¹ø° Ç׸ñ°ú µÎ ¹ø° Ç׸ñÀº ¸ðµÎ ¾×¼Ç ¾ÆÀÌÅÛÀ¸·Î Ç¥½ÃÇϵµ·Ï ¼³Á¤ÇÏ¿´Áö¸¸, ù ¹ø° Ç׸ñÀº ¾×¼Ç¹Ù¿¡ ºó °ø°£ÀÌ

ÀÖÀ» ¶§¸¸ Ç¥½ÃÇÏ¸ç ¾ÆÀÌÄÜ°ú ÅؽºÆ® ¸ðµÎ Ç¥½ÃµÇµµ·Ï ¼³Á¤ÇÏ¿´½À´Ï´Ù.

µÎ ¹ø° Ç׸ñÀº Ç×»ó ¾×¼Ç ¾ÆÀÌÅÛÀ¸·Î Ç¥½ÃµÇµµ·Ï ÇÏ¿´À¸¸ç, ¼¼ ¹ø° Ç׸ñÀº ÀϹÝÀûÀÎ ¸Þ´º Ç׸ñÀ¸·Î½á ¿À¹öÇÃ·Î¿ì ¸Þ´º¿¡

Ç¥½ÃµÇµµ·Ï ¼³Á¤ÇÏ¿´½À´Ï´Ù.

´ÙÀ½, ¸Þ´º Ç׸ñÀ» ¼±ÅÃÇßÀ» ¶§ ½ÇÇàÇÒ µ¿ÀÛÀ» ±¸ÇöÇØ º¸µµ·Ï ÇÏ°Ú½À´Ï´Ù. ¿ì¼± onCreateOptionsMenu()¿¡¼­ ¸Þ´º ¸®¼Ò½º

ÆÄÀÏÀ» ºÒ·¯ ¸Þ´º¿¡ Àû¿ëÇÑ ÈÄ, onOptionsItemSelected() ¸Þ¼­µå¿¡¼­ °¢ ¸Þ´º Ç׸ñÀ» ¼±ÅÃÇßÀ» ¶§ ¼öÇàÇÒ µ¿ÀÛÀ» ±¸ÇöÇÕ´Ï´Ù.

 
	public class MainActionBar extends Activity {

		/** Called when the activity is first created. */
		@Override
		public void onCreate(Bundle savedInstanceState) {
			super.onCreate(savedInstanceState);
		
			// TODO Auto-generated method stub
			
			//requestWindowFeature(Window.FEATURE_NO_TITLE);
			setContentView(R.layout.actionbar_main);
			
		}
		

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

		@Override
		public boolean onOptionsItemSelected(MenuItem item) {
			String text = null;
			
			switch(item.getItemId()){
			case android.R.id.home:
				text = "Application icon";
				break;
				
			case R.id.item1:
				text = "Action item, with text, displayed if room exists";
				break;
				
			case R.id.item2:
				text = "Action item, icon only, always displayed";
				break;
				
			case R.id.item3:
				text = "Normal menu item";
				break;
				
			default:
				return false;
			}
			Toast.makeText(this, text, Toast.LENGTH_SHORT).show();
			
			return true;
		}
		
	}
	


°¢ Ç׸ñÀ» ¼±ÅÃÇÒ ¶§¸¶´Ù ÇØ´ç Ç׸ñÀÇ ¼Ó¼ºÀ» Å佺Ʈ·Î Ç¥½ÃÇϵµ·Ï ±¸ÇöÇß½À´Ï´Ù.

¾Õ¿¡¼­ ¾Ë¾Æº» °Í°ú °°ÀÌ ¾×¼Ç¹Ù¿¡ Ç¥½ÃµÇ´Â ¾ÖÇø®ÄÉÀÌ¼Ç ¾ÆÀÌÄÜ(android.R.id.home)À» ¼±ÅÃÇÑ °Í ¶ÇÇÑ °¨ÁöÇÏ¿© Å佺Ʈ·Î Ç¥½ÃÇϵµ·Ï ±¸ÇöÇß½À´Ï´Ù.

¿¹Á¦¸¦ ½ÇÇàÇÏ¸é ´ÙÀ½°ú °°ÀÌ ¾×¼Ç¹Ù°¡ Ç¥½ÃµÇ´Â°ÍÀ» È®ÀÎÇÒ ¼ö ÀÖ½À´Ï´Ù.

¸Þ´º ¸®¼Ò½º¿¡¼­ ¼³Á¤ÇÑ °Í°ú °°ÀÌ Ã¹¹ø°¿Í µÎ¹ø° Ç׸ñÀÌ ¾×¼Ç ¾ÆÀÌÅÛÀ¸·Î Ç¥½ÃµÇ°í, ³ª¸ÓÁö ÇÑ Ç׸ñÀº ¿À¹öÇÃ·Î¿ì ¸Þ´º¿¡ Ç¥½ÃµË´Ï´Ù.
 
¡Ø Ȥ½Ã µµ¿òÀÌ µÇ¼Ì´Ù¸é ´ñ±Û¿¡ ÇѸ¶µð ³²°ÜÁÖ¼¼¿ä!
ÀÛ¼ºÀÚ   ºñ¹Ð¹øÈ£
ÀÚµ¿±Û ¹æÁö     (ÀÚµ¿±Û ¹æÁö ±â´ÉÀÔ´Ï´Ù.)
³»¿ë   ´ñ±Û´Þ±â 
À̸ÞÀÏ ¹®ÀÇ : cak0280@nate.com  
Copyright 2000 By ENTERSOFT.KR All Rights Reserved.