본문 바로가기

프로그래밍/Android

옵션메뉴 배경 변경

 

* 옵션메뉴 *

 

옵션메뉴는 컨텐스트 메뉴와는 다르게 옵션버튼(메뉴버튼)을 통해 호출되는

녀석이다.

보통 하단에서 올라오게 되는데, activity에서 해당 이벤트 콜백 메쏘드를 오버라이드해

작성해 주면 된다.

 

public boolean onCraetOptionsMenu(Menu menu);

public boolean onPrepareOptionsMenu(Menu menu);

public boolean onOptionsItemSelected(MenuItem item);

 

뭐 옵션메뉴 관련한 예제는 많이 있으니 생략하고~

 

이 옵션메뉴의 배경색을 바꿀수 있을까?.. 옵션 아이템에 배경이미지를 넣을 수 있을까?

배경을 바꿔주기 위한 메쏘드를 하나 구현한다.

 

protected void setOptionMenuBG() {

    Factory factory = new Factory() {

        public View onCreateView(String name, Context context, AttributeSet attrs) {

if( name.equalsIgnoreCase("com.android.internal.view.menu.IconMenuItemView" )) {

    LayoutInflater f = getLayoutInflater();

    final View view = f.createView(name, null, null );

    new Handler().post( new Runnable() {

        public void run() {

            // 색상변경

            view.setBackgroundColor( Color.argb(50, 200, 20, 20) );

         

            // 배경 변경

            view.setBackgroundDrawable(getResources().getDrawable(R.drawable.my_icon) );

        }

    });

    return view;

}

return null;

        }

    };

    getLayoutInflater().setFactory(factory);

}

 

이 메쏘드를

public boolean onCraetOptionsMenu(Menu menu); 에서 한번 호출해 주면 된다.

 

요녀석은 각 메뉴 아이템이 생성될때 처리되는 프로세스에 끼어 들어가 생성되는 뷰가

옵션 아이템(IconMenuItemView)인 경우 해당 설정을 변경토록 하는 녀석이다.

 

음.. 이것저것 만져보면 재밌을듯~