2012-10-13 3 views
7

버전 4.2로 업그레이드하고 ForceOverflow 부모 테마가 제거되어 나타나기 때문에 이전 코드가 컴파일되지 않았습니다.ActionBarSherlock ForceOverflow 리소스를 찾을 수 없습니다.

After Googling this issue이 그것을 의도적 장치 일관된 메뉴 버튼을 유지하도록 제거 된 것으로 보인다.

물리적 인 메뉴 버튼을 사용하는 것에 대한 논쟁을 이해하지만, 나는 그것에 동의하지 않습니다 ... 게다가 그 오래된 메뉴는 너무 추합니다.

나는 사용자가 이전 기능에 액세스 할 수 없다고 말하고 싶지 않습니다. (결국 메뉴 버튼이 화면에 표시되는 이유입니다) 여기 내 옵션은 무엇입니까? 향후 릴리스에서 변경 될 예정입니까? 나는 이전 버전의 ABS를 고수해야하고 최근 버전에서 수정 된 오래된 ABS 라이브러리에 다른 버그를 다루어야합니까? 주변에 어떤 문제가 있습니까?

+0

난 그냥 지금 4.1을 고수하기로 결정 ... 이것에 대해 행복하지 않은 중 하나지만 매우 행복 ABS와 함께 ... – dorjeduck

답변

9

"실제"오버플로 메뉴를 가져 오는 대신 서브 메뉴로 위조 할 수 있습니다.

원래 오버플로 버튼처럼 보이고 작동합니다. 항상 더 좋을 것입니다.

private Menu mainMenu; 
private SubMenu subMenu1; 

    @Override 
public boolean onCreateOptionsMenu(Menu menu) { 

    mainMenu = menu; 

    subMenu1 = menu.addSubMenu(""); 
    subMenu1.add("Settings"); 
    subMenu1.add("About"); 
    subMenu1.add("Help"); 

    MenuItem subMenu1Item = subMenu1.getItem(); 
    subMenu1Item.setIcon(R.drawable.ic_menu_moreoverflow_normal_holo_dark); 
    subMenu1Item.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS); 

    return super.onCreateOptionsMenu(menu); 
} 

당연히 이전처럼 subMenus를 설정할 수 있습니다. groudID, itemID 등으로

메뉴 아이콘으로 * ic_menu_moreoverflow_normal_holo_dark *를 선택했습니다. 이렇게하면 버튼이 오버플로처럼 보입니다.

이제 사용자가 하드웨어 메뉴 버튼을 눌렀을 때 열려면이 하위 메뉴가 필요합니다. 이전처럼 mainMenu와 subMenu1을 설정하면 매우 쉽게 할 수 있습니다.

@Override 
public boolean onKeyUp(int keyCode, KeyEvent event) { 
    if (keyCode == KeyEvent.KEYCODE_MENU) { 
      mainMenu.performIdentifierAction(subMenu1.getItem().getItemId(), 0); 
      return true; 
    } 
    return super.onKeyUp(keyCode, event); 
} 

가져올 것을주의 :

import com.actionbarsherlock.view.SubMenu; 
import com.actionbarsherlock.view.Menu; 
import com.actionbarsherlock.view.MenuItem; 

을하지 :

import android.view.MenuItem; 
+0

안녕하세요, 코드 스 니펫을 주셔서 감사합니다.하지만 문제가 있습니다. 내 주 메뉴에 축소 된 searchview가 있고 메뉴 단추를 누를 때마다 해당 searchview가 오버플로 메뉴가 아닌 확장됩니다. – Asim

+0

아마도 onKeyUp() 메서드에서 잘못된 하위 메뉴를 호출합니다. – Sorcerer

관련 문제