============FAIL============

@Override

public boolean onCreateOptionsMenu(Menu menu) {

    MenuInflater inflater = getMenuInflater();

    inflater.inflate(R.menu.my_menu, menu);

    return true;

}


@Override

public boolean onPrepareOptionsMenu(Menu menu) {

    menu.findItem(R.id.menu1).setEnabled(isEnable);

    if(isEnable){

        menu.findItem(R.id.menu1).setIcon(R.drawable.menu1_icon);

    }else{

        Drawable icon = getResources().getDrawable(R.drawable.menu1_icon);

        icon.setAlpha(255*4/10);

        menu.findItem(R.id.menu1).setIcon(icon);

    }

    return super.onPrepareOptionsMenu(menu);

}


enable/disable 상태에 따라 menu icon의 alpha 값을 조절하여 표시하고자 하였으나

동일한 icon resource 인 경우 setIcon으로는 alpha값이 변경된 icon으로 업데이트 되지 않는다.


============PASS============

@Override

public boolean onCreateOptionsMenu(Menu menu) {

    MenuInflater inflater = getMenuInflater();

    inflater.inflate(R.menu.my_menu, menu);

    return true;

}


@Override

public boolean onPrepareOptionsMenu(Menu menu) {

    menu.findItem(R.id.menu1).setEnabled(isEnable);

    Drawable icon = menu.findItem(R.id.menu1).getIcon();

    if(icon == null){

        menu.findItem(R.id.menu1).setIcon(R.drawable.menu1_icon);

        icon = menu.findItem(R.id.menu1).getIcon();

    }

    if(isEnable){

        icon.setAlpha(255);

    }else{

        icon.setAlpha(255*4/10);

    }

    icon.invalidateSelf();

    return super.onPrepareOptionsMenu(menu);

}

menu icon을 가져온 뒤 icon의 alpha 값을 변경하고 invalidateSelf()로 업데이트 하면 변경된 alpha icon이 표시된다.


'programmer > android' 카테고리의 다른 글

content observer  (0) 2013.07.17
media scanner  (0) 2013.07.16
Using TabHost  (0) 2013.07.11
AlertDialog Message with List(Custom View)  (0) 2013.07.08
Using context menu on Linearlayout  (0) 2013.07.08

+ Recent posts