Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Replace toolbar layout according to the displayed fragment

Tags:

I have an activity with navigation drawer which replace the main_fragment_container on the activity. When one of the fragments is displayed I want to change the layout of the toolbar and add a spinner to it (and remove it when the fragment is hidden).

My layout looks like that:

<LinearLayout     xmlns:android="http://schemas.android.com/apk/res/android"     xmlns:tools="http://schemas.android.com/tools"     xmlns:sothree="http://schemas.android.com/apk/res-auto" android:id="@+id/main_parent_view" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:fitsSystemWindows="true">  <android.support.v7.widget.Toolbar      android:id="@+id/toolbar"     android:layout_width="match_parent"     android:layout_height="wrap_content"     sothree:theme="@style/AppTheme.ActionBar" />  <android.support.v4.widget.DrawerLayout     android:id="@+id/drawer_layout"     android:layout_width="match_parent"     android:layout_height="match_parent">      <!-- Main layout -->     <FrameLayout         android:id="@+id/main_fragment_container"         android:layout_width="match_parent"         android:layout_height="match_parent" />      <!-- Nav drawer -->     <fragment         android:id="@+id/fragment_drawer"         android:name="com.idob.mysoccer.ui.DrawerFragment"         android:layout_width="@dimen/navigation_drawer_width"         android:layout_height="match_parent"         android:layout_gravity="left|start" /> </android.support.v4.widget.DrawerLayout> 

like image 711
Idob Avatar asked Nov 18 '14 05:11

Idob


People also ask

How do I get a fragment toolbar?

if you are using custom toolbar or ActionBar and you want to get reference of your toolbar/action bar from Fragments then you need to first get instance of your Main Activity from Fragment's onCreateView Method like below. ImageView vRightBtn = activity. toolbar. findViewById(R.

What is the layout for toolbar?

In Android applications, Toolbar is a kind of ViewGroup that can be placed in the XML layouts of an activity. It was introduced by the Google Android team during the release of Android Lollipop(API 21). The Toolbar is basically the advanced successor of the ActionBar.

Can we customize toolbar?

You can customize toolbars in the main window, editors, and dialogs. To display the toolbar, select the Toolbar command on the Options menu. A check mark indicates that the toolbar is active. To modify the toolbar, select Customize Toolbar on the Options menu (or double-click the toolbar area).


1 Answers

Not sure what you are trying to accomplish but I think, if possible, you should approach this by letting the fragments customize your toolbar rather than replacing it. Your can let your fragments hide/show views on the toolbar depending on your needs.

Add setHasOptionsMenu(true); in the fragments OnCreateView() and then override onOptionsMenuCreated()

Like this:

@Override public View onCreateView (LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {     setHasOptionsMenu(true);     return inflater.inflate(R.layout.result_list, container, false); }  @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {     inflater.inflate(R.menu.this_frag_menu, menu);     super.onCreateOptionsMenu(menu, inflater); } 

If you need to do more specific things with the toolbar you can get the instance using

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);

like image 54
J.G.Sebring Avatar answered Sep 23 '22 14:09

J.G.Sebring