Quero implementar o padrão 'Espaço flexível com conteúdo sobreposto' a partir das técnicas de rolagem do Material design , como neste vídeo :
Meu layout XML agora se parece com:
<android.support.design.widget.CoordinatorLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="192dp"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
<android.support.design.widget.CollapsingToolbarLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_scrollFlags="scroll|exitUntilCollapsed">
<android.support.v7.widget.Toolbar
android:layout_height="?attr/actionBarSize"
android:layout_width="match_parent"
app:layout_collapseMode="pin"/>
</android.support.design.widget.CollapsingToolbarLayout>
</android.support.design.widget.AppBarLayout>
<android.support.v4.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<....>
</LinearLayout>
</android.support.v4.widget.NestedScrollView>
</android.support.design.widget.CoordinatorLayout>
Existe uma maneira fácil de fazer isso usando a Biblioteca de projetos? Ou preciso criar um CoordinatorLayout.Behavior personalizado para fazer isso?
android
android-design-library
android-collapsingtoolbarlayout
ianhanniballake
fonte
fonte
Respostas:
Na verdade, sobrepor a visualização de rolagem com o AppBarLayout é um recurso incluído da Biblioteca de Suporte de Design do Android : você pode usar o
app:behavior_overlapTop
atributo em seuNestedScrollView
(ou em qualquer Visualização usando ScrollingViewBehavior ) para definir a quantidade de sobreposição:Observe que
app:behavior_overlapTop
só funciona em visualizações que possuem oapp:layout_behavior="@string/appbar_scrolling_view_behavior"
, pois é o comportamento que está usando o atributo (não a Visualização ou o ViewGroup pai, como os atributos geralmente se aplicam), daí obehavior_
prefixo.Ou defina-o programaticamente por meio de setOverlayTop () :
fonte
layout_behavior
ebehavior_overlapTop
) termina atrás de seu irmão AppBarLayout. Tentei mudar a ordem no XML, mas não parece ter nenhum efeito. Alguma ideia de qual poderia ser o problema?error no resource identifier found for attribute behavior_overlayTop
behavior_overlapTop
massetOverlayTop()
- sobreposição vs sobreposição. Certifique-se de que está usando o correto!Além da resposta aceita , chame setTitleEnabled (false) em seu CollapsingToolbarLayout para fazer o título ficar fixo na parte superior como no exemplo.
Como isso:
ou adicionando-o em xml assim:
Caso contrário, o título pode desaparecer por trás do conteúdo sobreposto, a menos, é claro, que esse seja o comportamento que você deseja.
fonte