Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

ActionBar/Toolbar not showing on Lollipop version of app

I'm currently trying to convert my app to lollipop material design and have run into some problems with the actionbar/toolbar. Implementing everything the way I did, the actionbar/toolbar won't show on either a lollipop or kitkat device. Perhaps someone could look at my themes, styles, activity_main (where I hold a bunch of fragments and is the only place I put the toolbar xml code), and mainactivity.

Thanks.

values/styles.xml

<resources>

<style name="Theme.MyTheme" parent="Theme.AppCompat.Light">
    <!-- Set AppCompat’s actionBarStyle -->
    <item name="actionBarStyle">@menu/action_menu</item>

    <!-- The rest of your attributes -->
</style>

</resources>

values/themes.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="AppTheme" parent="AppTheme.Base"/>

<style name="AppTheme.Base" parent="Theme.AppCompat">
    <item name="colorPrimary">@color/material_blue_grey_800</item>
    <item name="colorPrimaryDark">@color/material_blue_grey_950</item>
    <item name="android:textColor">@color/black</item>
    <item name="android:windowNoTitle">true</item>
    <item name="windowActionBar">false</item>
</style>
</resources>

activity_main.xml

<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/drawerLayout"
android:layout_width="match_parent"
android:layout_height="match_parent" >

<FrameLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/fragment_container"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

<RelativeLayout
    android:id="@+id/drawerView"
    android:layout_width="250dp"
    android:layout_height="wrap_content"
    android:layout_gravity="start" >

    <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:minHeight="?attr/actionBarSize" />

    <ListView
        android:id="@+id/drawerList"
        android:layout_width="250dp"
        android:layout_height="match_parent"
        android:layout_gravity="left"
        android:background="@drawable/nav_border"
        android:divider="@null" />
</RelativeLayout>
<!--
         <fragment
        android:id="@+id/fragment1"
        android:name="com.shamu11.madlibsportable.MadlibsSelect"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" />

-->

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

mainactivity

public class MainActivity extends ActionBarActivity implements
    OnItemClickListener {

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_main);

    Fragment fragment = new MadlibsSelect();

    fragment = new MadlibsSelect();

    FragmentTransaction fm = getSupportFragmentManager().beginTransaction();
    fragment.setArguments(getIntent().getExtras());
    fm.add(R.id.fragment_container, fragment);
    fm.commit();

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

    toolbar.inflateMenu(R.menu.action_menu);

    //ActionBar bar = getActionBar();
    //bar.setBackgroundDrawable(new ColorDrawable(Color.parseColor("#428bca")));

    ...more stuff happen down here including adding nav drawer.
like image 623
sanic Avatar asked Nov 08 '14 05:11

sanic


2 Answers

Change you're activity_main.xml as follows

<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/drawerLayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical" >

        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:minHeight="?attr/actionBarSize" />

        <FrameLayout
            android:id="@+id/fragment_container"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />
    </LinearLayout>

    <RelativeLayout
        android:id="@+id/drawerView"
        android:layout_width="250dp"
        android:layout_height="wrap_content"
        android:layout_gravity="start" >

        <ListView
            android:id="@+id/drawerList"
            android:layout_width="250dp"
            android:layout_height="match_parent"
            android:layout_gravity="left"
            android:background="@drawable/nav_border"
            android:divider="@null" />
    </RelativeLayout>
    <!--
         <fragment
        android:id="@+id/fragment1"
        android:name="com.shamu11.madlibsportable.MadlibsSelect"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" />
    -->

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

and If you're using setSupportActionBar then toolbar.inflateMenu won't work.

For more details check this post Android Usages Of Toolbar. It may help you.

like image 57
Harsha Vardhan Avatar answered Oct 12 '22 23:10

Harsha Vardhan


Your activity has to extend from ActionBarActivity when using the new AppCompat library.

like image 38
Roberto Betancourt Avatar answered Oct 13 '22 00:10

Roberto Betancourt