4

내 응용 프로그램에서 Collapsible Toolbar을 사용하고있었습니다. 실행시 접을 수있는 도구 모음은 스크롤링을 사용하도록 설정되고 정상적으로 작동하는 상태로 펼쳐집니다. 하지만 이제는 내 API가 실패 할 경우 전체 화면 오류 레이아웃을 표시해야합니다. 이 경우 나는 스크롤 효과를 차단 도구 모음을 축소해야합니다.축소/축소 축소 가능 도구 모음 함께 블록 스크롤

오류 레이아웃에 재시도 단추가 표시됩니다. 다시 시도하면 API 호출을 다시하고 API가 성공하면 툴바를 확장하고 스크롤 효과를 사용할 수 있습니다.

도구 모음을 setExpanded (플래그, 애니메이션)으로 축소 할 수 있었지만 오류 레이아웃이 표시되는 동안 축소 가능한 툴바의 스크롤 효과를 차단할 수 없습니다.

스크롤 효과를 차단하고 확장 해제/축소 도구 모음을 차단하는 방법을 제공해야합니다. 어떤 도움이라도 정말로 바르게 평가 될 것이다.

+0

몇 가지 코드를 제공해 주시겠습니까? –

답변

1

이전 대답을 바탕으로 확장 모드에서 화면을 잠그기 위해 AppBarrr 라이브러리를 만들었습니다.

내가 말한 것처럼, Toolbar의 높이가 중요합니다 다음 CollapsingToolbarLayoutToolbar까지 붕괴 할 것이다 '의 높이와 AppBarLayout까지 확장됩니다의 높이입니다.

Toolbar 및 확장 레이아웃 (화면과 스크롤을 잠그는 데 사용)으로 두 개의 레이아웃을 설정해야합니다. CollapsingToolbarLayout이 생성되고 내부에 이러한 레이아웃이 팽창됩니다.

애니메이션의 지속 시간, 내부 색상 , 축소/확장 된 제목의 스타일, 잠겨있는 레이아웃의 높이까지 선언 할 수 있습니다. 또한 확장 레이아웃을 숨길 수도 있습니다. 확장 레이아웃 내에 NestedScrollViewScrollView을 지원할 수 있습니다. The documentation 및 샘플 앱은 Github에서 사용할 수 있습니다.라이브러리를 사용하지 않는 사람들을 위해


my previous answer 그것을 할 수있는 방법을 보여줍니다. 여기에 이전 대답의 출력입니다 : 당신은 그냥 XML에서 간단한 위젯이 필요 lib 디렉토리에

기본적으로 Prevent toolbar to expand with custom error layout

는, 이것이 동일한 개념,하지만 전체 클래스를 작성할 필요가 없습니다, 그리고 그것 뿐이다 !


부담없이 사용하십시오. 유용 할 수 있기를 바랍니다.)

+0

안녕하세요, Fllo, 귀하의 도움에 감사드립니다. 전체 코드를 제공해 주시겠습니까? git에 코드를 업로드하십시오. – user3492435

+0

툴바를 다시 확장 한 후 코드에서 뒤로 스크롤하는 방법을 보여주지 않습니다. 코드 스 니펫도 공유 할 수 있습니까? – user3492435

0

AlertDialog을 사용하면 오류를 알리고 ProgressDialog (회 전자)을 사용하면 내가하고있는 것을 보여줄 수 있습니다. 앱이 그 일을하는 동안 사용자 입력을 차단할 수 있습니다.

+0

내 요구 사항에 오류 레이아웃을 대신 사용한다고 명시되어 있습니다. 그게 왜 내가 여기서 경고 대화를 사용할 수 없는지. – user3492435

+0

고객과 통화 할 수 있을까요? AlertDialog는 이와 같은 것들을 위해 만들어졌으며, 뭔가 다른 것을 만드는 것은 Android 경험에 위배됩니다. (결코 다른 것을 시도하는 것을 멈추지 않았습니다.) – Flummox

+0

경고 대화 상자가 필요 없으므로 화면이 공백으로 표시됩니다. API를 다시 누르기 위해 재시도 단추 대신 오류 레이아웃이 필요합니다. – user3492435

2

축소 가능 툴바와 겹치지 않도록 오류 레이아웃을 만드십시오. 또한 오류 레이아웃에 android:clickable="true"을 설정하십시오.

오류 레이아웃에 대한 가시성을 설정하면 이에 따라 툴바 스크롤을 설정하십시오. 당신은 단지 재산을 사용하는 것입니다 적용 할 수 있습니다

<RelativeLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:background="#f3f3f3" 
     android:orientation="vertical" 
     > 
<!-- Add your other layout including Collapsible Toolbar here.--> 

<RelativeLayout 
     android:id="@+id/errorLayout" 
     android:clickable="true" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     /> 

</RelativeLayout> 
0

간단한 해결책

안드로이드 : 가시성 = "사라"당신이 보여주고 싶은 당신의 실수를하지 않는 내용에 대한 부동산 안드로이드 사용하여 레이아웃을 볼 수 : 부모 레이아웃의 하단에 = "볼 수"

장소 오류 레이아웃 가시성을

내용이 화면에 표시되지 않고 오류 레이아웃 만 표시되면 원하는 결과를 얻을 수 있습니다. 희망이 당신을 도와줍니다.

+0

하지만이 경우에도 스크롤이 비활성화되지 않습니다. 이 경우 축소/축소 축소 가능 도구 모음을 사용할 수 있습니다. – user3492435

0

인터페이스를 구현하고 축소 효과를 사용하거나 사용하지 않도록 설정할 때 해당 메소드를 호출 할 수 있습니다.

public interface AppbarRequestListener { 
    void unlockAppBarOpen(); 

    void lockAppBarClosed(); 
} 

@Override 
    public void unlockAppBarOpen() { 
     appBarLayout.setExpanded(true, false); 
     appBarLayout.setActivated(true); 
     setAppBarDragging(false); 
    } 

    @Override 
    public void lockAppBarClosed() { 
     appBarLayout.setExpanded(false, false); 
     appBarLayout.setActivated(false); 
     setAppBarDragging(false); 

    } 

    private void setAppBarDragging(final boolean isEnabled) { 
     CoordinatorLayout.LayoutParams params = 
       (CoordinatorLayout.LayoutParams) appBarLayout.getLayoutParams(); 
     AppBarLayout.Behavior behavior = new AppBarLayout.Behavior(); 
     behavior.setDragCallback(new AppBarLayout.Behavior.DragCallback() { 
      @Override 
      public boolean canDrag(AppBarLayout appBarLayout) { 
       return isEnabled; 
      } 
     }); 
     params.setBehavior(behavior); 
    }