Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Android toolbar change layout

I got an activity with many fragments. When i change fragments i need to change also and my toolbar declared in MainActivity.class. My problem is that i include a layout and didnt find a method to change this layout. How to change toolbars layout in this case? MainActivity.class

 @ContentView(R.layout.activity_main)
    public class MainActivity extends RoboActionBarActivity {

        @InjectView(R.id.tool_bar)
        Toolbar toolbar;

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setToolBar();
            if (savedInstanceState == null) {
                getSupportFragmentManager().beginTransaction()
                        .add(R.id.container, new SplashFragment())
                        .commit();
            } else {
                getSupportFragmentManager().beginTransaction()
                        .replace(R.id.container, new HomeFragment())
                        .commit();
            }
        }
    private void setToolBar() {
            setSupportActionBar(toolbar);
        }

        @Override
        public void onAttachFragment(Fragment fragment) {
            super.onAttachFragment(fragment);
            String currentFragmentClass = fragment.getClass().getSimpleName();
            if (currentFragmentClass.equals(getString(R.string.info_fragment))) {
    //here i need to change and set onclicks
            }
        }
    }

activity_main.xml

 <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".activities.MainActivity">

        <include
            android:id="@+id/tool_bar"
            layout="@layout/tool_bar" />

        <View
            android:id="@+id/shadow_view"
            android:layout_width="match_parent"
            android:layout_height="1dp"
            android:layout_below="@+id/tool_bar"
            android:background="#ad8c22" />

        <FrameLayout
            android:id="@+id/container"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_below="@+id/shadow_view"
            tools:context=".activities.MainActivity"
            tools:ignore="MergeRootFrame" />
    </RelativeLayout>

tool_bar.xml

<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@color/colorToolBar"
    >
    <RelativeLayout
        android:id="@+id/toolbar_main_layout"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:padding="5dp">
        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_centerHorizontal="true"
            android:layout_centerVertical="true"
            android:onClick="toggleSlidingMenu"
            android:src="@mipmap/icon_sliding_menu" />
        <ImageView
            android:id="@+id/app_logo"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"
            android:src="@mipmap/jammboree" />
        <RelativeLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerVertical="true"
            android:layout_toRightOf="@+id/app_logo"
            android:padding="5dp">
            <ImageView
                android:id="@+id/hotlist_bell"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentRight="true"
                android:contentDescription="bell"
                android:gravity="center"
                android:padding="7dp"
                android:src="@mipmap/icon_my_cart" />
            <TextView
                android:id="@+id/hotlist_hot"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignRight="@id/hotlist_bell"
                android:layout_alignTop="@id/hotlist_bell"
                android:background="@drawable/rounded_square"
                android:gravity="center"
                android:minWidth="17sp"
                android:padding="2dp"
                android:text="2"
                android:textColor="#ffffffff"
                android:textSize="12sp" />
            <TextView
                android:id="@+id/myMoneyInMyPocket"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentRight="true"
                android:layout_below="@+id/hotlist_bell"
                android:text="2000$"
                android:textColor="#ffffff"
                android:textSize="14sp"
                android:textStyle="bold" />
        </RelativeLayout>
    </RelativeLayout>
</android.support.v7.widget.Toolbar>
like image 457
test Avatar asked Feb 17 '16 21:02

test


People also ask

Can we customize toolbar?

You can make other changes like font, size, color, etc in custom_toolbar. xml file. If you want to change the text of custom toolbar, you can do in this way: ....


1 Answers

If I understood right, you want to change the toolbar whenever you change the Fragment the user is currently seeing, isn´t that right?

There is a very simple way to achieve this trough your XML. Let's say you want three different styled toolbars.

1) First, you create XML files for every toolbar you need.

2) Then you include every toolbar in to your activity_main.xml, like this:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".activities.MainActivity">

    <include
        android:id="@+id/toolbar1"
        layout="@layout/tool_bar1"
        android:visibility="visible" />

    <include
        android:id="@+id/toolbar2"
        layout="@layout/tool_bar2"
        android:visibility="gone" />

    <include
        android:id="@+id/toolbar3"
        layout="@layout/tool_bar3"
        android:visibility="gone" />

    // Here is the rest of your XML code

</RelativeLayout>

See how all three toolbar includes have the visibility property?

Well, now you can toy with this property, and show/hide the desired toolbar whenever you want/need to.

For example:

RelativeLayout mLayout = (RelativeLayout) getActivity().findViewById(R.id.my_main_layout);

Toolbar mToolbar1 = (Toolbar) mLayout.findViewById(R.id.toolbar1);
mToolbar1.setVisibility(View.GONE);

Toolbar mToolbar2 = (Toolbar) mLayout.findViewById(R.id.toolbar2);
mToolbar2.setVisibility(View.GONE);

Toolbar mToolbar3 = (Toolbar) mLayout.findViewById(R.id.toolbar3);
mToolbar3.setVisibility(View.VISIBLE);

And just change which one are you making visible, according to your needs.

Hope this helps.

like image 67
herrmartell Avatar answered Oct 13 '22 00:10

herrmartell