2017-10-12 4 views
0

Problème: tentative de réalisation de la barre d'outils avec fond arqué. Le contenu lors du défilement doit passer par cet espace d'arc.Est-il possible de changer la forme de la barre d'outils Android à partir du rectangle par défaut dans Android?

  • La seule chose que je pourrais penser (aussi bien que essayé) est de définir l'arrière-plan de la barre d'outils avec un dessin qui a arch. Regarde ça résout les choses. Mais lorsque le contenu est défilé, l'espace blanc de l'arc reste, car la barre d'outils conserve sa forme rectangle. J'essaie également d'éviter d'utiliser des formes personnalisées à la place de la barre d'outils, car cette barre d'outils fait partie d'une barre d'outils Collapsibletool et d'une barre d'outils contrôlée par la disposition du coordinateur.

Des suggestions?

enter image description here

+0

@commonsware Avez-vous déjà rencontré ce scénario? Des pensées à ce sujet? – RmK

Répondre

3

Cela peut se faire assez facilement.

<android.support.design.widget.CoordinatorLayout 
    android:layout_height="match_parent" 
    android:layout_width="match_parent" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:orientation="vertical" 
    xmlns:android="http://schemas.android.com/apk/res/android"> 

    <android.support.design.widget.AppBarLayout 
     android:id="@+id/appBar" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:background="#0000" 
     app:elevation="0dp"> 

     <android.support.design.widget.CollapsingToolbarLayout 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      app:layout_scrollFlags="scroll|exitUntilCollapsed"> 

      <android.support.v7.widget.Toolbar 
       android:layout_width="match_parent" 
       android:layout_height="?attr/actionBarSize" 
       android:background="@color/colorPrimary" 
       app:layout_collapseMode="pin"/> 

      <!--Other collapsing toolbar components here--> 

     </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"> 

      <!--Your content here--> 

    </android.support.v4.widget.NestedScrollView> 

    <FrameLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:background="@drawable/curve" 
     app:layout_anchor="@id/appBar" 
     app:layout_anchorGravity="bottom" 
     android:layout_gravity="bottom"/> 

</android.support.design.widget.CoordinatorLayout> 

Le FrameLayout ancré au fond des AppBarLayout agit en tant que récipient pour la voûte plantaire. J'ai créé un drawable vectoriel que j'ai utilisé comme arrière-plan pour la FrameLayout

curve.xml

<vector android:width="100dp" 
    android:height="40dp" 
    android:viewportHeight="50" 
    android:viewportWidth="400" 
    xmlns:android="http://schemas.android.com/apk/res/android"> 

    <path 
     android:pathData="M0,0L400,0L400,50Q200,-50,0,50L0,0" 
     android:fillColor="@color/colorPrimary"/> 

</vector> 

Modifier la propriété android:height du drawable pour contrôler la hauteur que vous voulez l'arc aller

sortie

enter image description here

+0

Je pense que vous êtes très proche de la solution. J'ai couru ton code. Le texte va dans l'arc. Mais comme je l'ai mentionné dans la deuxième partie de ma question, je voulais que l'action Collapsibletoolbarlayout reste intacte. Cela le brise réellement. Pourriez-vous s'il vous plaît exécuter votre code et vérifier cela? – RmK

+0

@RmK J'ai inclus la sortie. Cela fonctionne assez bien pour moi. –

+0

Merci Ajil. Et le contenu défilant traverse l'arc? Pourriez-vous s'il vous plaît partager la sortie de cela aussi? – RmK