24

저는 앱 표시 줄과 탐색 창으로 활동하고 있습니다. 앱 표시 줄은 appcompat-v7 라이브러리 버전 21. +의 새 툴바 클래스를 사용하여 구현되며 탐색 표시 줄이 그 앞에 표시됩니다.Contextual ActionMode Bar가 appcompat-v7 툴바를 오버레이하지만 탐색 서랍을 오버레이하는 방법은 무엇입니까?

활동에는 선택할 수있는 항목이있는 목록보기가 포함되어 있으므로 상황 별 작업 표시 줄 (CAB)이 표시됩니다.

ActionBarActivity.startSupportActionMode(android.support.v7.view.ActionMode.Callback callback) 

기본적으로 CAB은 오버레이 대신 도구 모음 위에 삽입됩니다. CAB는 기본적으로 실제 ActionBar를 오버레이하는 것으로 보입니다. this answer의 공연으로, CAB는 올바르게 테마 속성이 설정되어있는 도구 모음 오버레이 :

<item name="windowActionModeOverlay">true</item> 

을하지만이 또한 the Material design specs에 따라 올바르지 않습니다 CAB 오버레이 탐색 서랍을 만든다. 주요 안드로이드 디자인 문서 still recommend 탐색 창을 열었을 때 CAB를 숨기고 닫을 때 다시 표시하고 this could be done은 문제를 "수정"하지만 반드시 필요하지는 않습니다. 소재 디자인 사양에서는 탐색 서랍이 열릴 때 CAB를 숨겨야한다고 지정하지 않으며 CAB 위로 탐색 함을 열어야하므로 CAB를 숨기면 사실 시각적 인 방해가됩니다.

탐색 표시 줄을 툴바 위에 겹쳐 놓은 채로 CAB 앞에 표시 할 수있는 방법이 있습니까?

답변

1

해결책을 찾았거나 간단한 해결 방법을 찾았을 수도 있습니다.
심지어 startActionMode()이 내장 된 setChoiceMode() 대신 사용될 때 ListFragment와 동일한 문제가 발생했습니다. 그래서 ListFragment 코드를 살펴본 결과 startActionMode()이 ListView에서 호출되지 않았 음을 알았습니다. 그래서 뷰를 사용해 보았습니다. 이제

  • : 또한

    View aView = getActivity().findViewById(R.id.container); 
    ActionMode mActionMode = aView.startActionMode(this); 
    

    : 내 단편을 포함하는 활동 컨테이너를

    ActionMode mActionMode = getListView().startActionMode(this); 
    

    또는 사용 : 예상대로 내 코드에서 지금은 분명히 두 조각 목록보기를 사용하여 작동 뒤로 버튼은 액션 모드를 없애기 전에 작동하지 않습니다.

  • 이제 CAB은 액션 바를 제대로 커버합니다. 내 스타일에 g windowActionModeOverlay 그것의 일부만을가 렸습니다 - 적어도 내 경우
  • 택시 아이콘이 뒤로 화살표보다는 틱입니다 -하지

가 난 솔직히 불구하고이 무엇을 의미하는지 확인 그 이유는 확실하지 않으므로이 솔루션이 얼마나 안전한지 잘 모르겠지만 시간이 지나면 제대로 작동하는 것 같습니다.
누구든지 더 나은 이해를 주시고 자유롭게 의견을 말하고 수정하십시오.

+3

ListView 대신 RecyclerView를 사용하고 있습니다. 이 경우 적어도 이것은 작동하지 않았습니다. CAB는 아직 내 서랍 끝났어. –