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
Related
I wanna grouping this following items, this is a toolbar item menu pic 1 . I want to change it, like below : pic 2 the last one. so what should i do ? please help me. Thanks
This is my xml code :
`
<item
android:id="#+id/action_search2"
android:orderInCategory="100"
android:icon="#drawable/ic_search"
myapp:actionViewClass="android.widget.SearchView"
android:title="Search"
app:showAsAction="always"
android:visible="false"/>
<item
android:id="#+id/filter_city"
android:orderInCategory="100"
android:icon="#drawable/ic_sort_black_24dp"
android:title="filter"
app:showAsAction="always"
android:visible="true">
<menu>
<item
android:id="#+id/cityAll"
android:title="SEMUA" />
<item
android:id="#+id/citySby"
android:title="SURABAYA" />
<item
android:id="#+id/cityJkt"
android:title="JAKARTA" />
<item
android:id="#+id/statusAll"
android:title="SEMUA STATUS" />
<item
android:id="#+id/statusPublish"
android:title="PUBLISH" />
<item
android:id="#+id/statusNotPublish"
android:title="NOT PUBLISH" />
<item
android:id="#+id/statusClose"
android:title="CLOSE" />
</menu>
</item>
`
<?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:showIn="navigation_view"
tools:context=".MenuActivity">
<item
android:id="#+id/action_search2"
android:orderInCategory="100"
android:icon="#drawable/ic_search"
myapp:actionViewClass="android.widget.SearchView"
android:title="Search"
app:showAsAction="always"
android:visible="false"/>
<item
android:id="#+id/filter_city"
android:title="City"
android:orderInCategory="100"
android:icon="#drawable/ic_sort_black_24dp"
android:title="filter"
app:showAsAction="always"
android:visible="true">
<menu>
<item
android:id="#+id/cityAll"
android:title="SEMUA" />
<item
android:id="#+id/citySby"
android:title="SURABAYA" />
<item
android:id="#+id/cityJkt"
android:title="JAKARTA" />
</menu>
</item>
<item
android:id="#+id/action_search2"
android:orderInCategory="100"
android:icon="#drawable/ic_search"
myapp:actionViewClass="android.widget.SearchView"
android:title="General"
app:showAsAction="always"
android:visible="false"/>
<menu>
<item
android:id="#+id/statusAll"
android:title="SEMUA STATUS" />
<item
android:id="#+id/statusPublish"
android:title="PUBLISH" />
<item
android:id="#+id/statusNotPublish"
android:title="NOT PUBLISH" />
<item
android:id="#+id/statusClose"
android:title="CLOSE" />
</menu>
</item>
</item>
</menu>
Here is your solution try this snippet -
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<item
android:id="#+id/cityAll"
android:title="SEMUA" />
<item
android:id="#+id/citySby"
android:title="SURABAYA" />
<item
android:id="#+id/cityJkt"
android:title="JAKARTA" />
<item
android:id="#+id/statusAll"
android:title="SEMUA STATUS" />
<item
android:id="#+id/statusPublish"
android:title="PUBLISH" />
<item
android:id="#+id/statusNotPublish"
android:title="NOT PUBLISH" />
<item
android:id="#+id/statusClose"
android:title="CLOSE" />
</menu>
Here is your output -
Hello friends i want to create option menu like below image
so i create below menu.xml file:
<?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">
<item
android:id="#+id/live_cart"
android:orderInCategory="100"
android:showAsAction="always"
android:icon="#drawable/cart"
android:title=""/>
<item
android:id="#+id/overflow"
android:orderInCategory="100"
android:showAsAction="always"
android:icon="#drawable/ic_menu_overflow"
android:title="">
<menu>
<item android:id="#+id/action_dasbboard"
android:title="Logout"
android:showAsAction="never"
/>
<item android:id="#+id/export_data"
android:title="My accout"
android:showAsAction="never"
/>
<item android:id="#+id/action_help"
android:title="Wishlist"
android:showAsAction="never"
/>
<item android:id="#+id/action_feedback"
android:title="Track order"
android:showAsAction="never"
/>
<item android:id="#+id/about"
android:title="Help"
android:showAsAction="never"
/>
<item
android:id="#+id/terms"
android:title="Legal"
app:showAsAction="never"/>
</menu>
</item>
</menu>
When i run above code i will come like below
it is coming only one option so how can i solve this problem any idea?
insert
<item
android:id="#+id/live_cart"
android:orderInCategory="100"
app:showAsAction="always"
android:icon="#drawable/cart"
android:title=""/>
try this
Please take a look:
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="#+id/live_cart"
android:icon="#drawable/ic_merge"
android:orderInCategory="100"
android:showAsAction="always"
android:title=""/>
<item
android:id="#+id/action_dasbboard"
android:showAsAction="never"
android:title="Logout"
/>
<item
android:id="#+id/export_data"
android:showAsAction="never"
android:title="My accout"
/>
<item
android:id="#+id/action_help"
android:showAsAction="never"
android:title="Wishlist"
/>
<item
android:id="#+id/action_feedback"
android:showAsAction="never"
android:title="Track order"
/>
<item
android:id="#+id/about"
android:showAsAction="never"
android:title="Help"
/>
<item
android:id="#+id/terms"
android:title="Legal"
app:showAsAction="never"/>
</menu>
Remove the second menu and then it should work:
<?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">
<item
android:id="#+id/live_cart"
android:icon="#drawable/cart"
android:orderInCategory="100"
android:showAsAction="always"
android:title="" />
<item
android:id="#+id/overflow"
android:icon="#drawable/ic_menu_overflow"
android:orderInCategory="100"
android:showAsAction="always"
android:title="" />
<item
android:id="#+id/action_dasbboard"
android:showAsAction="never"
android:title="Logout" />
<item
android:id="#+id/export_data"
android:showAsAction="never"
android:title="My accout" />
<item
android:id="#+id/action_help"
android:showAsAction="never"
android:title="Wishlist" />
<item
android:id="#+id/action_feedback"
android:showAsAction="never"
android:title="Track order" />
<item
android:id="#+id/about"
android:showAsAction="never"
android:title="Help" />
<item
android:id="#+id/terms"
android:title="Legal"
app:showAsAction="never" />
</menu>
inflate this xml in your activity
#Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
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;
}
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>
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