2012-10-24 3 views
7

숫자가있는 '빨간색 배지'를 표시하도록 ActionBar MenuItem의 아이콘을 어떻게 동적으로 업데이트 할 수 있습니까? (개념적으로 "읽지 않은 메시지 수"와 유사)ActionBar 메뉴 항목의 동적 드로어 블 아이콘? (Android, ActionBarSherlock)

내 Android 애플리케이션에서 API 레벨 10 이상을 타겟팅하는 ActionBarSherlock을 사용하고 있습니다. 내 애플리케이션은 모바일 데이터 캡처 용이며 사용자가 즉시 새 데이터를 제출할 수는 없지만 (예 : 연결 상태가 좋지 않은 경우)

휴대 전화에 로컬로 저장된 '제출되지 않은 항목'이있을 때마다 사용자에게 (작업 ​​표시 줄의) 메뉴 항목을 표시하여 UnsubmittedItems 활동으로 클릭하여 수동으로 업로드를 시작할 수 있습니다.

이상적으로이 메뉴 항목에는 그래픽이 다시 표시됩니다 제출되지 않은 항목 수 표시 (이메일 또는 SMS 앱이 읽지 않은 메일의 수를 배지로 표시하는 것과 유사). 현재, 난 그냥하고 있어요 :

unsubmittedMenuItem.setTitle(Integer.toString(numUnsubmitted)); 

그리고이 작동하지만 두 가지 문제를 : 나는 아이콘을 사용하고 또한, 내가 좋겠, 이해할 수 뭔가 ("제출되지 않은")로 제목을 유지하는 것을 선호 것 숫자 뒤에 빨간 원으로 된 배경과 같이 여기에 맞춤 레이아웃이나 디자인을 좋아합니다.

어떻게 수행 할 생각인가요?

  1. 사용 수의 일부 범위를 미리 제작 된 레벨리스트 당김 (예를 들어 1, 2, 3 ... 10 +) 다음 unsubmittedMenuItem.getIcon() setLevel (:. 지금까지 내 연구는 두 가지 가능성을 제시 numUnsubmitted)
  2. 은 비트 맵과 캔버스 API를 사용하여, 완전히 동적으로 전체 비트 맵을 구축

이가 나도 오프라인 # 1처럼 또는 즉시 (비트 맵에 텍스트를 렌더링하고있어 의미에서 유사하다 # 2처럼) 가능하다면 ActionBar의 '네이티브'텍스트 렌더링을 활용하고 TextView처럼 그 뒤에 빨간 원을 삽입하는 것이 좋습니다.

아이콘 드로어 블 전용 사용자 정의 레이아웃을 설정하는 방법이 있습니까? (그냥 아이콘 NOT 전체 actionLayout?)

답변

6

이 작업을 수행 할 수있는 방법이 많이있다 : 당신의 아이콘 이미지의 상단에

  1. 사용 LayerDrawable 및 스택 배지 이미지.
  2. Drawable에서 확장되는 사용자 정의 클래스를 작성하고 아이콘과 배지를 수동으로 그립니다.
  3. ImageView의 아이콘과 TextView의 배지 오버레이가있는 맞춤 작업 항목보기를 사용합니다.
+0

감사합니다. Jake (전 작품에 대한 엄청난 팬입니다.) 3 번 문제를 해결하기 위해 시간을 할애하겠습니다. 특정 메뉴 항목 대 전체 작업 표시 줄에 대한 사용자 정의 레이아웃은 다소 혼란 스럽지만 더 자세히 살펴 보겠습니다. –

+1

옵션 # 3은 분명히 갈 길이며 모든 안드로이드 개념/추상화를 성공적으로 수행하면 실제로는 꽤 쉽습니다. 나는 실수로 '사용자 지정 작업보기'가 전체 작업 표시 줄 (예 : 자주 사용되는 확장 검색 상자 예제)을 대신 차지한다고 생각했지만 wrap_content를 사용하면 사용자 지정 '아이콘'을 아주 쉽게 작성할 수 있습니다. 감사! –

+0

@MikeRepass 비슷한 문제에 직면 해 있습니다. 함께 경험해 주시겠습니까? – NullPointer

관련 문제