programing

AppCompat-v7이 있는 도구 모음 및 상황별 수행 표시줄

copyandpastes 2023. 8. 14. 23:59
반응형

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);

상황별 수행 표시줄이 도구 모음 위에 오도록 만드는 방법을 아는 사람이 있습니까?

Toolbar and Contextual ActionBar

업데이트:

솔루션: 창 ActionModeOverlay 속성을 사용합니다.테마로 설정합니다.

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

작업 모드는 작업 표시줄 위에 표시됩니다. (최신 AppCompat을 사용하지 않는 경우 속성에 "안드로이드:" 접두사를 추가해야 합니다.)기본적으로 AppCompat은 화면 맨 위에 도구 모음이 있으며 그 위에 작업 모드를 그려야 한다는 것을 알려줍니다.


이전 답변/해결 방법:

저도 같은 문제에 부딪혔습니다.어떤 테마를 설정하든 항상 수행 표시줄로 설정한 도구 모음을 아래로 밀어넣습니다.지원 도서관이 있든 없든 시도해봤지만 상관없었습니다.

유감스럽게도 저는 그것을 고칠 수 없어서 대신 해결책을 만들었습니다.내 안에서ActionModeCallbackonCreateActionMode수행 표시줄을 숨깁니다.

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

반응형