0

Ich versuche, die CoordinatorLayout zu implementieren. Aber wenn ich versuche, den folgenden Code anzuwenden, um eine XML-Datei zu definieren, überlappt sie auch die Appbar. Was soll ich tun, um die Überlappung in Appbar zu stoppen? HierWie kann ich den Überlauf in der Appbar stoppen?

ist ein XML:

<?xml version="1.0" encoding="utf-8"?> 
<android.support.design.widget.CoordinatorLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:ignore="RtlHardcoded"> 

    <android.support.design.widget.AppBarLayout 
     android:id="@+id/main.appbar" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"> 

     <android.support.design.widget.CollapsingToolbarLayout 
      android:id="@+id/main.collapsing" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      app:layout_scrollFlags="scroll|exitUntilCollapsed|snap"> 

      <ImageView 
       android:id="@+id/main.imageview.placeholder" 
       android:layout_width="match_parent" 
       android:layout_height="300dp" 
       android:scaleType="centerCrop" 
       android:src="@drawable/quila2" 
       android:tint="#11000000" 
       app:layout_collapseMode="parallax" 
       app:layout_collapseParallaxMultiplier="0.9" /> 

      <FrameLayout 
       android:id="@+id/main.framelayout.title" 
       android:layout_width="match_parent" 
       android:layout_height="100dp" 
       android:layout_gravity="bottom|center_horizontal" 
       android:background="#00838F" 
       android:orientation="vertical" 
       app:layout_collapseMode="parallax" 
       app:layout_collapseParallaxMultiplier="0.3"> 

       <LinearLayout 
        android:id="@+id/main.linearlayout.title" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_gravity="center" 
        android:orientation="vertical"> 

        <TextView 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" 
         android:layout_gravity="center_horizontal" 
         android:gravity="bottom|center" 
         android:text="Subbu kummithi" 
         android:textColor="@android:color/white" 
         android:textSize="30sp" /> 

        <TextView 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" 
         android:layout_gravity="center_horizontal" 
         android:layout_marginTop="4dp" 
         android:text="@string/role_name" 
         android:textColor="@android:color/white" /> 

       </LinearLayout> 
      </FrameLayout> 
     </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" 
     android:scrollbars="none" 
     app:behavior_overlapTop="30dp" 
     app:layout_behavior="@string/appbar_scrolling_view_behavior"> 

     <android.support.v7.widget.CardView 
      android:id="@+id/card_id" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_margin="8dp" 
      app:cardElevation="8dp" 
      app:contentPadding="16dp"> 

      <TextView 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:lineSpacingExtra="8dp" 
       android:text="This is for new activity This is for new activity This is for new activity" 
       android:textSize="18sp" /> 
     </android.support.v7.widget.CardView> 


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

    <android.support.v7.widget.Toolbar 
     android:id="@+id/main.toolbar" 
     android:layout_width="match_parent" 
     android:layout_height="?attr/actionBarSize" 
     android:background="#00838F" 
     app:layout_anchor="@id/main.framelayout.title" 
     app:theme="@style/ThemeOverlay.AppCompat.Dark" 
     app:title=""> 

     <LinearLayout 
      android:layout_width="wrap_content" 
      android:layout_height="match_parent" 
      android:orientation="horizontal"> 

      <Space 
       android:layout_width="@dimen/image_final_width" 
       android:layout_height="@dimen/image_final_width" /> 

      <TextView 
       android:id="@+id/main.textview.title" 
       android:layout_width="wrap_content" 
       android:layout_height="match_parent" 
       android:layout_marginLeft="8dp" 
       android:gravity="center_vertical" 
       android:text="Welcome Mr. Subbu" 
       android:textColor="@android:color/white" 
       android:textSize="20sp" /> 

     </LinearLayout> 
    </android.support.v7.widget.Toolbar> 

    <de.hdodenhof.circleimageview.CircleImageView 
     android:layout_width="@dimen/image_width" 
     android:layout_height="@dimen/image_width" 
     android:layout_gravity="center_horizontal" 
     android:src="@drawable/quila" 
     app:border_color="@android:color/white" 
     app:border_width="2dp" 
     app:finalHeight="@dimen/image_final_width" 
     app:finalYPosition="2dp" 
     app:layout_behavior="com.realmilk.activities.AvatarImageBehavior" 
     app:startHeight="2dp" 
     app:startToolbarPosition="2dp" 
     app:startXPosition="2dp" /> 
</android.support.design.widget.CoordinatorLayout> 

Und hier ist der Ausgang, wenn ich den obigen Code auszuführen:

Overlapping onto the appbar

Irgendwelche Ideen?

+0

Was ist mit dem Hinzufügen von 'android: fitsSystemWindows =" true "' in der 'AppBarLayout' und keine' CoordinatorLayout'? Dies sollte das Problem beheben .. – Mohsen

+1

Eigentlich ... Warum haben Sie ein 'Toolbar' Element ** außerhalb ** der' AppBarLayout' und unter einem 'NestedScrollView'? –

+0

kann ich nicht verstehen .. würden Sie meinen, ich muss in das AppBarLayout oder NestedScrollView setzen. Wo soll ich platzieren? – Jaccs

Antwort

0

versuchen Attribut android:fitsSystemWindows="true" in Ihrem CoordinatorLayout

<?xml version="1.0" encoding="utf-8"?> 
<android.support.design.widget.CoordinatorLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:fitsSystemWindows="true" 
    tools:ignore="RtlHardcoded"> 
..... 
+0

nach dem Hinzufügen von android: fitsSystemWindows = "True" Half Bar kommt, was bedeutet, dass die verbleibenden wieder überlappt. – Jaccs

+1

@KiranRaju Ich denke, es muss auch hinzugefügt werden, um die 'AppBarLayout' –

+0

ich hinzugefügt, aber keine Verwendung noch verhält es sich wie zuvor. – Jaccs

0

Set android:fitsSystemWindows="true" in CoordinatorLayout, AppBarLayout und CollapsingToolbarLayout hinzufügen Raum oben zu reservieren.

Wenn Sie möchten, dass das Hintergrundbild hinter der transparenten Statusleiste beginnt, setzen Sie auch android:fitsSystemWindows="true" im main.imageview.placeholder.

+0

Ich habe in ImageView hinzugefügt, aber das Ergebnis ist das gleiche wie zuvor .. nichts ändert sich, es ist wieder die Hälfte der transparenten Balken überlappen. – Jaccs

+0

Da sich die Toolbar außerhalb des CollapsingToolbarLayout befindet und an main.frachelayout.title verankert ist, hat sie keinen Top-Inset-Schutz. Ein Weg könnte sein, der Symbolleiste einen oberen Rand hinzuzufügen und die Mathematik im Verhalten des Avatars anzupassen. – GPack

Verwandte Themen