Programming

AppCompat-v7이 포함 된 도구 모음 및 상황 별 작업 모음

procodes 2020. 5. 19. 20:28
반응형

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로 설정 한 툴바는 항상 아래로 내려갑니다. 지원 라이브러리를 사용하거나 사용하지 않고 시도했지만 중요하지 않았습니다.

불행히도 나는 그것을 고칠 수 없어서 대안을 만들었습니다. 내에서 ActionModeCallbackonCreateActionMode내가 작업 표시 줄을 숨길 수 :

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

반응형