Why the menu items appear on the optionsMenu? - android

Despite there are some icons associated with certain action and have no enough space in the Actionbar, they appear in the optionsMenu instead of appearing in the overflow icon.
I am inflating the actionBar with five icons each one has a specific functionality "Please refer to the XML file below", the items which have the android:showAsAction=never
I expect them to implicitly reside inside the overflow icon on the actionBar, but when I run the App, any item with the property android:showAsAction=never instead it appears in the optionsMenu. Why that happens? and I hope i explained the problem clearly.
Update:
Simply, I want, if there is no space for the icon to be placed on the ActionBar, They should be placed inside the overflow icon as shown in the image " the icon with three vertical dots over each other".
To Note:
I am using Galaxy Note3
Why my question is marked as a duplicate. The question suggested as a duplicate is different than mine? Please review the question again.
Java_Code:
public class ActionBarActivityTest00 extends Activity {
#Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_action_bar_activity_test00);
}
#Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.action_bar_activity_test00, menu);
return super.onCreateOptionsMenu(menu);
}
XML:
<menu
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context="com.example.actionbaractivitytest.ActionBarActivityTest00" >
<!-- Search / will display always -->
<item android:id="#+id/action_search"
android:icon="#drawable/ic_action_search"
android:title="action_search"
android:showAsAction="ifRoom"/>
<!-- Location Found -->
<item android:id="#+id/action_location_found"
android:icon="#drawable/ic_action_location_found"
android:title="action_location_found"
android:showAsAction="ifRoom" />
<!-- Refresh -->
<item android:id="#+id/action_refresh"
android:icon="#drawable/ic_action_refresh"
android:title="action_refresh"
android:showAsAction="ifRoom" />
<!-- Help -->
<item android:id="#+id/action_help"
android:icon="#drawable/ic_launcher"
android:title="action_help"
android:showAsAction="never"/>
<!-- Check updates -->
<item android:id="#+id/action_check_updates"
android:icon="#drawable/ic_action_refresh"
android:title="action_check_updates"
android:showAsAction="never" />

Add below property in showasaction=never All menu items
android:orderInCategory="2"
thats it..it will shown in overflow men..
Changes My Sample Code for your scenario and it works fine in my app
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context="com.example.demo.MainActivity" >
<item
android:id="#+id/action_settings1"
android:orderInCategory="100"
android:title="#string/action_settings"
app:showAsAction="ifRoom"/>
<item
android:id="#+id/action_settings2"
android:orderInCategory="100"
android:title="#string/action_settings"
app:showAsAction="ifRoom"/>
<item
android:id="#+id/action_settings3"
android:orderInCategory="100"
android:title="#string/action_settings"
app:showAsAction="ifRoom"/>
<item
android:id="#+id/action_settings"
android:orderInCategory="100"
android:title="#string/action_settings"
app:showAsAction="never"/>
<item
android:id="#+id/action_settings5"
android:orderInCategory="100"
android:title="#string/action_settings"
app:showAsAction="never"/>

Try this:
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context="com.example.fafad.MainActivity" >
<!-- Search / will display always -->
<item android:id="#+id/action_search"
android:icon="#drawable/ic_action_search"
android:title="action_search"
android:orderInCategory="1"
app:showAsAction="ifRoom"/>
<!-- Location Found -->
<item android:id="#+id/action_location_found"
android:orderInCategory="2"
android:icon="#drawable/ic_action_location_found"
android:title="action_location_found"
app:showAsAction="ifRoom" />
<!-- Refresh -->
<item android:id="#+id/action_refresh"
android:icon="#drawable/ic_action_refresh"
android:orderInCategory="3"
android:title="action_refresh"
app:showAsAction="ifRoom" />
<!-- Help -->
<item android:id="#+id/action_help"
android:icon="#drawable/ic_launcher"
android:orderInCategory="4"
android:title="action_help"
android:showAsAction="never"/>
<!-- Check updates -->
<item android:id="#+id/action_check_updates"
android:icon="#drawable/ic_action_refresh"
android:orderInCategory="5"
android:title="action_check_updates"
app:showAsAction="never" />
</menu>

Related

How does android action bar work?

<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context=".MainActivity">
<item
android:id="#+id/action_settings"
android:title="Settings"
android:orderInCategory="100"
app:showAsAction="never" />
<item android:id="#+id/action_search"
android:orderInCategory="200"
android:title="Search"
android:icon="#android:drawable/ic_search_category_default"
app:showAsAction="ifRoom" />
<item android:id="#+id/action_user"
android:orderInCategory="300"
android:title="User"
android:icon="#android:drawable/ic_dialog_info"
app:showAsAction="ifRoom" />
</menu>
I'm experimenting with android action bar and I'm confused how the settings and other actions are added to my action bar from the menu.
How did android determine that the first item in my list is to be added the three dot menu?
Because you asked android to not show it as action, like this:
app:showAsAction="never"
while for other items you show them when there is enough space to show:
app:showAsAction="ifRoom"

items from menu_main not being shown as icon on actionBar, using sdk version 22

I want to display the search icon on my action bar but it doesn't show up as icon even on setting showAsIcon to always.
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item android:id="#+id/action_search" android:title="#string/action_search"
android:orderInCategory="100"
android:icon="#drawable/ic_action_search"
app:showAsAction="ifRoom" />
<item android:id="#+id/action_switch"
android:title="#string/action_switch"
android:orderInCategory="100"
android:icon="#drawable/web_hi_res_512"
app:showAsAction="ifRoom" />
<item android:id="#+id/action_settings" android:title="#string/action_settings"
android:orderInCategory="100"
app:showAsAction="never" />
<item android:id="#+id/action_about" android:title="#string/action_about"
android:orderInCategory="100"
app:showAsAction="never" />
</menu>
Use the standard "android" namespace when you're extending Activity, the "app" namespace is only used if you need the support library, i.e. extending AppCompatActivity or ActionBarActivity.

Adding more options to "Settings" ActionBarSherlock

I have the following items to display on the ActionBar. They are :- Share and Settings.
Under Settings I need to show a drop down menu with two more options.
Here is my code:-
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<!-- Search, should appear as action button -->
<item android:id="#+id/action_share"
android:icon="#drawable/share"
android:title="Share"
android:showAsAction="ifRoom" />
<!-- Settings, should always be in the overflow -->
<item android:id="#+id/action_settings"
android:title="Settings"
android:showAsAction="never" />
</menu>
How can I go ahead wit it?
Try this code for subMenu using XML
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="#+id/action_share"
android:icon="#drawable/share"
android:title="Share"
android:showAsAction="ifRoom" />
<item android:id="#+id/action_settings"
android:icon="#drawable/setting"
android:title="#string/settings"
android:showAsAction="ifRoom|withText">
<menu>
<item android:id="#+id/option1"
android:icon="#drawable/yourIcon"
android:title="SubMenu1" />
<item android:id="#+id/option2"
android:icon="#drawable/yourIcon"
android:title="SubMenu2" />
</menu>
</item>
</menu>
JAVA code for Activity
#Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.actionbar, menu);
return true;
}

Stuck at Actionbar android

I'm an Android beginner and working on project with the ActionBar, but I'm stuck. The menu is not coming to the ActionBar.
activity_main_actions.xml
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<!-- Search / will display always -->
<item android:id="#+id/action_search"
android:icon="#drawable/ic_action_search"
android:title="#string/action_search"
android:showAsAction="ifRoom"/>
<!-- Location Found -->
<item android:id="#+id/action_location_found"
android:icon="#drawable/ic_action_location_found"
android:title="#string/action_location_found"
android:showAsAction="ifRoom" />
<!-- Refresh -->
<item android:id="#+id/action_refresh"
android:icon="#drawable/ic_action_refresh"
android:title="#string/action_refresh"
android:showAsAction="ifRoom" />
<!-- Help -->
<item android:id="#+id/action_help"
android:icon="#drawable/ic_action_help"
android:title="#string/action_help"
android:showAsAction="never"/>
<!-- Check updates -->
<item android:id="#+id/action_check_updates"
android:icon="#drawable/ic_action_refresh"
android:title="#string/action_check_updates"
android:showAsAction="never" />
</menu>'
</resources>'
MainActivity.class
public class MainActivity extends ActionBarActivity {
#Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.activity_main_actions, menu);
return super.onCreateOptionsMenu(menu);
}
}
Add following namespace in your activity_main_actions.xml
xmlns:yourapp="http://schemas.android.com/apk/res-auto"
And replace
android:showAsAction
With
yourapp:showAsAction
Now your final code will be like
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:yourapp="http://schemas.android.com/apk/res-auto" >
<!-- Search / will display always -->
<item android:id="#+id/action_search"
android:icon="#drawable/ic_action_search"
android:title="#string/action_search"
yourapp:showAsAction="ifRoom"/>
<!-- Location Found -->
<item android:id="#+id/action_location_found"
android:icon="#drawable/ic_action_location_found"
android:title="#string/action_location_found"
yourapp:showAsAction="ifRoom" />
<!-- Refresh -->
<item android:id="#+id/action_refresh"
android:icon="#drawable/ic_action_refresh"
android:title="#string/action_refresh"
yourapp:showAsAction="ifRoom" />
<!-- Help -->
<item android:id="#+id/action_help"
android:icon="#drawable/ic_action_help"
android:title="#string/action_help"
yourapp:showAsAction="never"/>
<!-- Check updates -->
<item android:id="#+id/action_check_updates"
android:icon="#drawable/ic_action_refresh"
android:title="#string/action_check_updates"
yourapp:showAsAction="never" />
</menu>
</resources>
And Let me know if problem exists

Displaying icon along with text in Android overflow menu of Action Bar

Is there a way in which we can display icon along with text in android over flow menu of action bar. My code is below :
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:id="#+id/menu_share"
android:title="share"
android:showAsAction="always"
android:actionProviderClass="android.widget.ShareActionProvider" />
<item
android:id="#+id/action_search"
android:showAsAction="always|collapseActionView"
android:icon="#drawable/ic_menu_search"
android:title="Search"
android:actionViewClass="android.widget.SearchView">
<item
android:id="#+id/item_refresh"
android:icon="#drawable/ic_menu_refresh"
android:title="Refresh"
android:showAsAction="ifRoom|withText"
/>
<item
android:id="#+id/item_save"
android:icon="#drawable/ic_menu_save"
android:title="Save"
android:showAsAction="ifRoom|withText"
></item>
</menu>
Can anyone help me is sorting out this issue. I need to display both icon along with text in overflow that appears on the top right of action bar.
Thanks in advance
As far as I understand, Action Overflow just displays the text (android:title). I've been looking through some apps, and none of them have "icon+text" on items within the Action Overflow.
AFAIK, this is not possible. What you can do is use a ListPopupWindow to accompish this. I had to use a custom bar instead of ActionBar, since it doesn't seem very customizable and I have used PopupMenu but I haven't tried to put icons in yet. But ListPopupWindow should allow you too. You may have to use a custom bar. Possibly attach it to the oveflow button somehow but I'm not sure that is possible
Note that ListPopupWindow needs API >=11
Try creating customized overflow menu:
<item
android:id="#+id/action_overflow"
android:icon="#drawable/overflow"
android:showAsAction="always">
<menu>
<item android:id="#+id/menu_share"
android:title="share"
android:showAsAction="always"
android:actionProviderClass="android.widget.ShareActionProvider" />
<item
android:id="#+id/action_search"
android:showAsAction="always|collapseActionView"
android:icon="#drawable/ic_menu_search"
android:title="Search"
android:actionViewClass="android.widget.SearchView">
<item
android:id="#+id/item_refresh"
android:icon="#drawable/ic_menu_refresh"
android:title="Refresh"
android:showAsAction="ifRoom|withText"
/>
<item
android:id="#+id/item_save"
android:icon="#drawable/ic_menu_save"
android:title="Save"
android:showAsAction="ifRoom|withText"
></item>
</menu>
</item>
you Need to add tools:context="your class" to menu tag
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context=".activities.BaseActivity">
<item
android:id="#+id/action_notification1"
android:icon="#drawable/three"
android:title="action_notification"
app:showAsAction="always">
<menu>
<item
android:id="#+id/profile"
android:icon="#drawable/profile"
android:orderInCategory="100"
android:title="PROFILE" />
<item
android:id="#+id/c"
android:icon="#drawable/correct_tick"
android:orderInCategory="100"
android:title="COMPLETED TRIPS" />
<item
android:id="#+id/app"
android:icon="#drawable/report_issue"
android:orderInCategory="100"
android:title="REPORT ISSUES" />
<item
android:id="#+id/r"
android:icon="#drawable/correct_tick"
android:orderInCategory="100"
android:title="REACHED CENTER" />
<item
android:id="#+id/pdf"
android:icon="#drawable/pdf_image"
android:orderInCategory="100"
android:title="BAG INFO" />
<item
android:id="#+id/l"
android:icon="#drawable/logout"
android:orderInCategory="100"
android:title="LOGOUT" />
</menu>
</item>
</menu>
#Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
menu.getItem(0).getSubMenu().getItem(3).setVisible(false);
menu.getItem(0).getSubMenu().getItem(4).setVisible(true);
return super.onCreateOptionsMenu(menu);
}
you shold write tool:context to menu tag then run you will get icons to your text

Categories

Resources