AppCompat-v7이 포함 된 도구 모음 및 상황 별 작업 모음
Lollipop과 AppCompat-v7 라이브러리에 도입 된 새로 추가 된 툴바를 사용하고 있습니다. 나는 다음 이 가이드 도구 모음 내가 눈치 설정에를 그이 페이지의 아래 도구 모음을 밀어 것 (예 : 붙여 넣기 / 복사 텍스트를 강조 같은) 상황에 맞는 액션 바을 가져올 것이다 때 뭔가 호출. 페이지 하단의 이미지에서 내가 말하는 것을 볼 수 있습니다.
본질적으로, 나는 이것을 이렇게 설정했습니다. include 태그와 함께 사용하는 xml 파일에 툴바가 정의되어 있습니다.
<android.support.v7.widget.Toolbar
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/colorPrimary"/>
그런 다음 내 관점에서 인스턴스화합니다.
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:id="@+id/root"
tools:context=".MainActivity">
<include
layout="@layout/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<!-- Rest of view -->
</LinearLayout>
코드에서는 다음과 같이 설정했습니다.
// On Create method of activity:
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
Contextual ActionBar가 툴바의 상단에 오도록하는 방법을 아는 사람이 있습니까?
최신 정보:
솔루션 : windowActionModeOverlay 특성을 사용하십시오 . 이것을 테마로 설정하십시오.
<item name="windowActionModeOverlay">true</item>
액션 모드는 액션 바를 아래로 밀지 않고 표시됩니다. 최신 AppCompat을 사용하지 않는 경우 속성에 "android :"접두사를 추가해야합니다. 기본적으로 AppCompat은 화면 상단에 도구 모음이 있으며 그 위에 ActionMode를 그려야 함을 알립니다.
이전 답변 / 해결 방법 :
나는 같은 문제에 부딪쳤다. 어떤 테마를 설정하든 ActionBar로 설정 한 툴바는 항상 아래로 내려갑니다. 지원 라이브러리를 사용하거나 사용하지 않고 시도했지만 중요하지 않았습니다.
불행히도 나는 그것을 고칠 수 없어서 대안을 만들었습니다. 내에서 ActionModeCallback
의 onCreateActionMode
내가 작업 표시 줄을 숨길 수 :
actionBarToolbar.setVisibility(View.GONE);
그리고 onDestroyActionMode
나는 그것을 다시 보여줍니다 :
actionBarToolbar.setVisibility(View.VISIBLE);
숨기 / 보여주기가 너무 빨라서 테스트 장치에서 눈에 띄지 않습니다. 물론 단점이 있습니다. 엔터테인먼트 애니메이션은 여전히 작동하지만 상황에 맞는 액션 바의 출구 애니메이션은 툴바가 즉시 팝업되기 때문에 사라집니다. 그러나 우리가 더 나은 솔루션을 발견 할 때까지 우리는 이것에 붙어 있다고 생각합니다.
(내 활동은 실제로 Google I / O 2014 앱 소스 코드 에서 가져온 BaseActivity
라는 메소드가 있는 사용자 정의 클래스를 확장 하므로 툴바를 쉽게 가져올 수 있습니다.getActionBarToolbar()
BaseActivity activity = (BaseActivity) getActivity();
activity.getActionBarToolbar().setVisibility(View.GONE);
I / O 앱이 상황 별 작업 표시 줄을 사용하지 않는 것이 너무 나쁩니다.)
활동에서 시작하지 말고 도구 모음에서 시작하십시오. 당신의 활동에서 :
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
toolbar.startActionMode(mActionModeCallback)
그리고 당신은 사용해야합니다
<item name="windowActionModeOverlay">true</item>
작은 추가 :
<item name="windowActionModeOverlay">true</item>
활동하려면 활동 super.onCreate(savedInstanceState)
전에 전화 하기 전에 전화하는
것이 중요합니다
setContentView(R.layout.your_activity)
. 이 경우 실제로 차이를 만듭니다!
내 경우에는 <item name="windowActionModeOverlay">true</item>
작동하지 않았다,하지만이 작품은 : <item name="android:windowActionModeOverlay">true</item>
는이 android
핵심입니다.
Jacob의 솔루션은 저에게 효과적이지만 상황에 맞는 ActionBar는 투명하고 툴바는 볼 수 있습니다. 이것은 다음과 같이 해결 될 수 있습니다.
<style name="AppTheme.Base" parent="Theme.AppCompat.Light">
....
....
<item name="actionModeStyle">@style/CustomActionMode</item>
</style>
<style name="CustomActionMode" parent="@style/Widget.AppCompat.ActionMode">
<item name="background">@color/primary_material_light</item>
</style>
테마 "AppTheme.Base"는 툴바에 적용된 테마 여야합니다.
상황에 맞는 ActionBar 스타일링에 대한 자세한 내용 :
재료 설계에서 appCompat를 사용하여 상황 별 작업 표시 줄을 사용자 정의하는 방법
툴바를 앞으로 가져 오는 매우 유용한 방법 toolbar.bringToFront()
또 다른 작은 추가 사항 : setContentView(R.layout.empty_screen)
전체 UI를 조각 ( ft.replace(android.R.id.content, fragment)
)으로 로드하는 경우를 통해 활동에서 빈 화면을 설정하십시오 .
참고 URL : https://stackoverflow.com/questions/26443403/toolbar-and-contextual-actionbar-with-appcompat-v7
'Programming' 카테고리의 다른 글
프로그래밍 방식으로 iPhone 캘린더에 커스텀 이벤트 추가 (0) | 2020.05.19 |
---|---|
WebView로 HTML 파일로드 (0) | 2020.05.19 |
통계 분석 및 보고서 작성을위한 워크 플로우 (0) | 2020.05.19 |
항목이 배열 / 목록에 있는지 확인 (0) | 2020.05.19 |
C #에서 프리미티브의 ==와 Equals ()의 차이점은 무엇입니까? (0) | 2020.05.19 |