AppCompat-v7이 있는 도구 모음 및 상황별 수행 표시줄
롤리팝에 새롭게 추가된 툴바와 AppCompat-v7 라이브러리를 사용하는 작업을 하고 있습니다.도구 모음을 설정하는 과정에서 이 가이드를 따라 수행 표시줄의 상황에 맞는 작업 표시줄(예: 복사/붙여넣기 텍스트 강조 표시)을 호출하면 페이지에서 도구 모음이 아래로 밀린다는 것을 알게 되었습니다.페이지 하단의 이미지에서 제가 말하는 내용을 확인할 수 있습니다.
그래서 기본적으로 이렇게 설정했습니다.포함 태그와 함께 사용하는 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);
상황별 수행 표시줄이 도구 모음 위에 오도록 만드는 방법을 아는 사람이 있습니까?
업데이트:
솔루션: 창 ActionModeOverlay 속성을 사용합니다.테마로 설정합니다.
<item name="windowActionModeOverlay">true</item>
작업 모드는 작업 표시줄 위에 표시됩니다. (최신 AppCompat을 사용하지 않는 경우 속성에 "안드로이드:" 접두사를 추가해야 합니다.)기본적으로 AppCompat은 화면 맨 위에 도구 모음이 있으며 그 위에 작업 모드를 그려야 한다는 것을 알려줍니다.
이전 답변/해결 방법:
저도 같은 문제에 부딪혔습니다.어떤 테마를 설정하든 항상 수행 표시줄로 설정한 도구 모음을 아래로 밀어넣습니다.지원 도서관이 있든 없든 시도해봤지만 상관없었습니다.
유감스럽게도 저는 그것을 고칠 수 없어서 대신 해결책을 만들었습니다.내 안에서ActionModeCallback
의onCreateActionMode
수행 표시줄을 숨깁니다.
actionBarToolbar.setVisibility(View.GONE);
그고리로.onDestroyActionMode
다시 한 번 보여드리겠습니다.
actionBarToolbar.setVisibility(View.VISIBLE);
숨김/표시가 너무 빨리 발생하여 테스트 장치에서 눈에 띄지 않습니다.물론 단점도 있습니다. 입력 애니메이션은 여전히 작동하지만 상황에 맞는 액션 막대의 종료 애니메이션은 도구 모음이 즉시 위로 튀어나오기 때문에 손실됩니다.하지만 더 나은 해결책을 찾을 때까지 우리는 이것을 고수해야 한다고 생각합니다.
정의를 입니다.BaseActivity
▁▁which스래라는 getActionBarToolbar()
Google I/O 2014 앱 소스 코드에서 가져온 것이므로 툴바를 쉽게 가져올 수 있습니다.
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>
to work it's important to call
super.onCreate(savedInstanceState)
전에 calling
setContentView(R.layout.your_activity)
in your activity. It really makes a difference in this case!
저 같은 경우에는.<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>
"앱테마"라는 주제입니다.베이스"가 도구 모음에 적용된 것이어야 합니다.
상황별 수행 표시줄 스타일에 대한 자세한 내용:
재료 설계에서 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
'programing' 카테고리의 다른 글
CSS에서 정규 표현을 사용합니까? (0) | 2023.09.03 |
---|---|
마리아에서 두 표의 데이터를 사용하여 계산된 열 생성DB (0) | 2023.09.03 |
XML 구문 분석 오류: FireFox에서는 제대로 포맷되지 않았지만 Chrome에서는 양호함 (0) | 2023.08.14 |
Jackson을 사용한 Spring REST - 400 잘못된 요청 로깅 (0) | 2023.08.14 |
예쁜 에스슬린트, 에스슬린트 플러그인 프리티어와 에스슬린트 구성 프리티어의 차이점은 무엇입니까? (0) | 2023.08.14 |