0

ich die Standard-AppBar Layout innerhalb eines Koordinators LayoutWie ein OnClickListener zu CollapsingToolbarLayout Titel setzen

<android.support.design.widget.AppBarLayout 
    android:id="@+id/app_bar" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:fitsSystemWindows="true" 
    android:theme="@style/AppTheme.AppBarOverlay"> 

    <android.support.design.widget.CollapsingToolbarLayout 
     android:id="@+id/toolbar_layout" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:fitsSystemWindows="true" 
     app:contentScrim="?attr/colorPrimary" 
     app:expandedTitleMarginStart="@dimen/activity_horizontal_margin" 
     app:expandedTitleMarginEnd="@dimen/activity_horizontal_margin" 
     app:expandedTitleGravity="start|bottom" 
     app:collapsedTitleTextAppearance="@style/TextAppearance.Widget.AppCompat.Toolbar.Title" 
     app:expandedTitleTextAppearance="@style/TextAppearance.AppCompat.Widget.ActionBar.Title.Inverse" 
     app:layout_scrollFlags="scroll|exitUntilCollapsed"> 

     <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:background="#FAFAFA" 
      android:fitsSystemWindows="true" 
      android:orientation="vertical" 
      app:layout_collapseMode="parallax"> 

      <com.petronas.laniakea.view.FixedRatioImageView 
       android:id="@+id/image" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:scaleType="centerCrop" 
       android:src="@drawable/logo_blue" /> 

     </LinearLayout> 

     <android.support.v7.widget.Toolbar 
      android:id="@+id/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> 

Wie richte ich einen OnClickListener für den Titel Textview haben? Ich konnte die Toolbar Privat Titel Textview bekommen, es öffentlich machen und stellte eine OnClickListener zu dieser Ansicht:

toolbar = (Toolbar) findViewById(R.id.toolbar); 
     setSupportActionBar(toolbar); 
     Field titleField = null; 
     try { 
      titleField =Toolbar.class.getDeclaredField("mTitleTextView"); 
      titleField.setAccessible(true); 
      TextView barTitleView = (TextView) titleField.get(toolbar); 
      barTitleView.setOnClickListener(v -> {}); 
     } catch (NoSuchFieldException e) { 
      e.printStackTrace(); 
     } catch (IllegalAccessException e) { 
      e.printStackTrace(); 
     } 

Der obige Code funktioniert gut, aber ich weiß immer noch nicht ein Click-Ereignis, wenn ich auf den Titel klicken. Irgendwelche Ideen? Hier ist meine Ansicht Hierarchie, wie sie auf STETH erscheint: View Hierarchy

+0

Vielleicht können Sie dies überprüfen https://StackOverflow.com/a/24838396/900128 –

+0

@MuthukrishnanRajendran Ich versuchte, dies bereits zurück null, funktioniert nicht. – MhdAdeebMasoud

Antwort

0

Sie die TextView von Toolbar durch Umwickeln versuchen. Also, Ihr Layout-Struktur wie:

<Toolbar ...> 
    <TextView android:id="@+id/toolbarTextId" ..../> 
</Toolbar> 

Nun OnClickListener für tippen Sie auf Text.

yourTextView.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     // some action 
    } 
}); 
+0

Ich habe das versucht, aber es wird als eine feste TextView auf der Symbolleiste angezeigt (nicht die Expanding/Collapsing Animationen mit der CollapsingToolbarLayout zeigen). – MhdAdeebMasoud

2

Soweit ich weiß, gibt es keine Möglichkeit, eine OnClickListener auf der Textview in irgendeiner Art eines ActionBar oder Symbolleiste zu setzen. Die Art und Weise, wie Sie verwenden, verwendet Reflektions-APIs, die, wenn sie in einer Release-App gepackt werden, sofort abstürzen.

+0

Danke für den Tipp, ich mag es auch nicht. Deshalb suche ich nach einer Lösung. – MhdAdeebMasoud

Verwandte Themen