2016-06-16 11 views
0

Ich habe eine einfache Aktivität mit einer CollapsingToolbar. Lassen Sie mich Ihnen zeigen, was ich habe 1. und dann erklären, was das Problem ist!Warum ist meine Schaltfläche versteckt, wenn ich CollapsingToolbar verwende

Wenn die Werkzeugleiste ausgeblendet ist (links) vs wenn es erweitert wird (rechts)

collapsed Toolbarexpanded Toolbar

Wie Sie sehen können, ist die Search button nicht zeigen, wenn die Symbolleiste erweitert wird . Wie kann ich das beheben?

activity_search.xml:

<android.support.design.widget.CoordinatorLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:fitsSystemWindows="true"> 

    <android.support.design.widget.AppBarLayout 
     android:fitsSystemWindows="true" 
     android:layout_width="match_parent" 
     android:layout_height="@dimen/app_bar_height" 
     android:theme="@style/AppTheme.AppBarOverlay"> 

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

      <ImageView 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       app:layout_collapseMode="parallax"/> 

      <android.support.v7.widget.Toolbar 
       android:layout_width="match_parent" 
       android:layout_height="?attr/actionBarSize" 
       app:layout_collapseMode="pin" 
       app:popupTheme="@style/AppTheme.PopupOverlay"/> 

     </android.support.design.widget.CollapsingToolbarLayout> 
    </android.support.design.widget.AppBarLayout> 

    <include 
     layout="@layout/content_search" /> 
</android.support.design.widget.CoordinatorLayout> 

content_search.xml

<RelativeLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    app:layout_behavior="@string/appbar_scrolling_view_behavior" > 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:id="@+id/ll" 
     android:layout_alignParentTop="true" 
     android:layout_marginBottom="@dimen/view_margin" 
     android:orientation="horizontal"> 

     <AutoCompleteTextView 
      android:id="@+id/etIngredients" 
      android:layout_width="0dp" 
      android:layout_height="wrap_content" 
      android:layout_weight="1"/> 

     <ImageButton 
      android:id="@+id/btAdd" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:src="@drawable/ic_add"/> 
    </LinearLayout> 

    <Button 
     android:id="@+id/btSearch" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentBottom="true" 
     android:layout_centerHorizontal="true" 
     android:text="@string/search"/> 

    <android.support.v7.widget.RecyclerView 
     android:id="@+id/rvIngredients" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_above="@id/btSearch" 
     android:layout_below="@id/ll"/> 
</RelativeLayout> 

Ich habe versucht, für diese Frage suchen, aber could'nt überhaupt etwas finden!

Antwort

1

Es ist wegen Ihrer zusammenklappbaren Symbolleiste versteckt. Wenn Sie "match_parent" sagen, wird die Höhe ohne die Höhe der erweiterten Symbolleiste verwendet. Alles, was Sie tun müssen, ist bottom_margin der aufgewendeten Toolbar Höhe hinzuzufügen.

Ich hoffe, es wird Ihnen helfen :)

+0

Macht Sinn! Ich werde das versuchen, wenn ich zurück zu meinem PC komme. Danke –

+0

Danke. Das hat funktioniert! :) –

+0

Dein Willkommen :) – Neo

2

Versuchen Modifizieren Sie Ihre content_search.xml so:

<LinearLayout 
android:layout_width="match_parent" 
android:layout_height="wrap_content" 
android:orientation="vertical" 
app:layout_behavior="@string/appbar_scrolling_view_behavior" > 

<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_alignParentTop="true" 
    android:layout_marginBottom="@dimen/view_margin" 
    android:orientation="horizontal"> 

    <AutoCompleteTextView 
     android:id="@+id/etIngredients" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_weight="1"/> 

    <ImageButton 
     android:id="@+id/btAdd" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:src="@drawable/ic_add"/> 
</LinearLayout> 

<android.support.v7.widget.RecyclerView 
    android:id="@+id/rvIngredients" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"> 

<Button 
    android:id="@+id/btSearch" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_centerHorizontal="true" 
    android:text="@string/search"/> 
</LinearLayout> 

Und wenn Sie nicht brauchen, Ihre Suchtaste rechts am unteren Rand des Bildschirms haben, ist es über dem RecyclerView zu bewegen.

+0

Wenn ich die RecyclerView voll, wird die Suchschaltfläche erneut unter dem Bildschirm angezeigt. Wenn ich keinen Fix finde, setze ich den Suchknopf oben, wie du es vorgeschlagen hast –

+1

Ich würde vorschlagen, den Suchknopf direkt unter dem 'EditText' zu halten, wenn der Knopf nach dem im' EditText 'eingegebenen Text suchen soll '. Wenn Sie jedoch den Button unten halten müssen, können Sie das Layout komplizierter machen und ein 'FrameLayout' verwenden. Lassen Sie es mich wissen, wenn Sie möchten, dass ich es demonstriere. –

+0

Ich habe noch nie mit FrameLayout gearbeitet, aber der Vorschlag von Neo hat funktioniert. Danke für Ihre Hilfe obwohl –

1

Bitte überprüfen Sie Ihre content_search.xml

was id android:layout_below="@id/ll" ??

Ich denke, das ist ID des linearen Layouts, bitte fügen Sie dies hinzu und laufen Sie hoffen, es wird Ihnen helfen.

+0

Edited meine Frage. Es ist das erste LinearLayout :) –