Custom actionbar layout with overflow menu

12,293

Solution 1

Seem there is no right way to solve this problem, so I tried a hack by using popup windows with list adapter to fake action bar overflow menu.
It look like this example: http://rajeshandroiddeveloper.blogspot.com/2013/07/android-popupwindow-example-in-listview.html

Solution 2

Just override this two methods to call overflow menu in your activity which one is extending ActionBarActivity :

@Override
public boolean onCreateOptionsMenu(Menu menu) {

    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.your_menu, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();
    if (id == R.id.action_settings) {
        return true;
    }
    return super.onOptionsItemSelected(item);
}
Share:
12,293

Related videos on Youtube

ductran
Author by

ductran

Doing what you like is freedom, liking what you do is happiness

Updated on June 04, 2022

Comments

  • ductran
    ductran almost 2 years

    I use the actionbarsherklock library with custom action bar look like this:

    enter image description here

    My custom implement:

      ActionBar actionBar = getSupportActionBar();
        actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
    
        // Do any other config to the action bar
        getSupportActionBar().setDisplayShowTitleEnabled(false);
        getSupportActionBar().setDisplayShowHomeEnabled(false);
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    
        // set custom view
        View actionBarView = getLayoutInflater().inflate(
                R.layout.action_bar_default, null);
    
        View btnMenuLeft= actionBarView.findViewById(R.id.btnMenuLeft);
        btnMenuLeft.setOnClickListener(new OnClickListener() {
    
            @Override
            public void onClick(View v) {
                toggle();
            }
        });
    
        View btnMenuShare= actionBarView.findViewById(R.id.btnMenuShare);
        ActionBar.LayoutParams params = new ActionBar.LayoutParams(
                LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
        actionBar.setCustomView(actionBarView, params);
    
        // Hide the home icon
        actionBar.setIcon(android.R.color.transparent);
        actionBar.setLogo(android.R.color.transparent);
    

    And here is the custom layout:

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/nav_bar_bg"
    android:gravity="center"
    android:orientation="horizontal" >
    
    <!-- menu button -->
        <ImageButton
            android:id="@+id/btnMenuLeft"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="@drawable/list_btn"
            android:clickable="false"
            android:duplicateParentState="true"
            android:focusable="false" />
    
        <!-- logo -->
        <ImageView       
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_weight="1"
        android:src="@drawable/app_logo" />
    
        <!-- share button -->
        <ImageButton
             android:id="@+id/btnMenuShare"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="@drawable/action_btn"
            android:clickable="false"
            android:duplicateParentState="true"
            android:focusable="false" />
    

    The problem is that I want add an over flow menu to share button like this one:

    enter image description here

    Please tell me how can I do that with the custom action bar layout.

  • Chirag Shah
    Chirag Shah over 9 years
    @R4j I also used my custom actionbar and opening the same dropdown as above image,so give answer to your own question with different solution and make it as a right solution is not a proper way!!!