2012-03-27 4 views

답변

2

메뉴 항목 프로그래밍 텍스트 변경하는 방법에 대해 설명이 링크를 따르십시오. 안드로이드에 대한

http://developer.android.com/guide/topics/ui/actionbar.html#Style

확인 : 텍스트 스타일 리소스를 정의하는 actionMenuTextColor.

+8

스타일 리소스를 정의하지 않고 변경하는 방법이 있나요의 하위 메뉴를 반복 시도? – Fabii

+4

이것은 질문 된 질문에 응답하지 않습니다. – Odys

+0

... 아직 허용 된 답변입니다! –

4

스타일 리소스를 정의하지 않고 변경하려면 SpannableString을 사용할 수 있습니다.

@Override 
public boolean onPrepareOptionsMenu(Menu menu) { 
      //To style first menu item 
    MenuItem menuItem = menu.getItem(0); 
    CharSequence menuTitle = menuItem.getTitle(); 
    SpannableString styledMenuTitle = new SpannableString(menuTitle); 
    styledMenuTitle.setSpan(new ForegroundColorSpan(Color.parseColor("#00FFBB")), 0, menuTitle.length(), 0); 
    menuItem.setTitle(styledMenuTitle); 

    return super.onPrepareOptionsMenu(menu); 
} 

@Override 
public boolean onMenuItemSelected(int featureId, MenuItem item) { 

    Toast.makeText(this, item.getTitle() + " clicked!", Toast.LENGTH_LONG).show(); 
    return true; 
} 

텍스트 스타일의 서식을 지정하면 "잘못된 페이로드 항목 유형"예외가 발생합니다. 이를 방지하려면 onMenuItemSelected를 재정 의하여 true 또는 false를 사용하십시오.

참조 :

Android: java.lang.IllegalArgumentException: Invalid payload item type

http://vardhan-justlikethat.blogspot.in/2013/02/solution-invalid-payload-item-type.html

+1

나는 이것을 시도했지만 아무런 효과가 없었다. Android 4.4에서 컴파일 및 실행하면 효과가 있습니까? – arlomedia

+1

이 솔루션은 안드로이드 5.0 및 6.0에서 작동하지 않습니다 – Akshay

1

이 Firewall_Sudhan 대답하지만 메뉴

@Override 
public void onPrepareOptionsMenu(Menu menu) { 
    super.onPrepareOptionsMenu(menu); 
    SubMenu subMenu = menu.getItem(0).getSubMenu(); 
    for (int i = 0; i < subMenu.size(); i++) { 
     MenuItem menuItem = subMenu.getItem(i); 
     CharSequence menuTitle = menuItem.getTitle(); 
     SpannableString styledMenuTitle = new SpannableString(menuTitle); 
     styledMenuTitle.setSpan(new ForegroundColorSpan(Color.BLACK), 0, menuTitle.length(), 0); 
     menuItem.setTitle(styledMenuTitle); 
    } 
} 
+0

이 솔루션은 안드로이드 5.0 및 6.0에서 작동하지 않습니다 – Akshay

관련 문제