Custom action bar layout with overflow menu

I am using the actionbarsherklock library with a custom action bar that looks like this:

enter image description here

My user interface:

  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 to add a menu above the stream to share a button like this:

enter image description here

Please tell me how I can do this using the custom actions panel.

+6
source share
2 answers

There seems to be no right way to solve this problem, so I tried to hack using popup windows with a list adapter to override the action bar overflow menu.
It looks like this: http://rajeshandroiddeveloper.blogspot.com/2013/07/android-popupwindow-example-in-listview.html

+4
source

Just override these two methods to bring up an overflow menu in your activity that extends 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); } 
+3
source

Source: https://habr.com/ru/post/955889/


All Articles