Custom rows for menu items in action bar - android

I am trying to create kind of list view with custom rows in menu in action bar. something like this:
I have searched a lot on web but could not find anything useful. How can I achieve this thing? I know you can bind custom views with items in menu but how?
I want to bind list view with this item:
<item
android:id="#+id/action_settings"
android:orderInCategory="100"
android:showAsAction="never"
android:title="#string/action_settings"/>

I had figured out after a while. If you want to list items with just icon and title in over flow menu, you need to do nesting of items within items or group them using menu tag.
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="#+id/action_settings"
android:icon="#drawable/ic_action_overflow"
android:orderInCategory="100"
android:showAsAction="always">
<menu>
<item
android:id="#+id/add_source"
android:icon="#drawable/add_on"
android:orderInCategory="100"
android:showAsAction="never"
android:title="#string/add_source"/>
<item
android:id="#+id/channel_setup"
android:icon="#drawable/channelsetup_on"
android:orderInCategory="100"
android:showAsAction="never"
android:title="#string/channel_setup"/>
</menu>
</item>
<item
android:id="#+id/time"
android:orderInCategory="99"
android:showAsAction="always"
android:title="#string/time_title"/>
<item
android:id="#+id/weather"
android:icon="#drawable/ic_action_cloud"
android:orderInCategory="98"
android:showAsAction="always"
android:title="#string/weather_title"/>
<item
android:id="#+id/search"
android:actionViewClass="android.widget.SearchView"
android:icon="#drawable/ic_action_search"
android:orderInCategory="97"
android:showAsAction="collapseActionView|always"
android:title="#string/search_title"/>
</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"

How to Button on Toolbar in android

I am working on android application , i want to add button on toolbar. I am using menu item but this coming in dropdown but i want simple text or button(forward button or reset button) on toolbar.
Add this to your menu element
android:showAsAction="ifRoom"
To see icon instead drop menu
Write your menu as
<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.toolbar.MainActivity" >
<item
android:id="#+id/action_search"
android:menuCategory="secondary"
android:orderInCategory="1"
app:showAsAction="always"
android:title="action_search"
app:actionViewClass="android.support.v7.widget.SearchView"/>
<item
android:id="#+id/action_share"
android:icon="#drawable/ic_share_white_24dp"
android:menuCategory="secondary"
android:orderInCategory="2"
app:showAsAction="always"
android:title="action_share"/>
<item
android:id="#+id/action_settings"
android:orderInCategory="100"
android:title="action_settings"
app:showAsAction="never"/>
</menu>
to see your menu items as icons

Not able to get both Icon and Image in Android Actionbar button

I am using a Split ActionBar & I have successfully inflated the menu for my fragment
When i used below code ::
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="#+id/action_settings"
android:orderInCategory="100"
android:showAsAction="never"
android:title="#string/action_settings"/>
<item
android:id="#+id/home"
android:orderInCategory="1"
android:showAsAction="always"
android:title="Search"/>
<item
android:id="#+id/java"
android:orderInCategory="2"
android:showAsAction="always"
android:title="Share"/>
<item
android:id="#+id/android"
android:orderInCategory="3"
android:showAsAction="always"
android:title="Account"/>
</menu>
I get the output as::
When i use second code in an another usecase::
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="#+id/action_settings"
android:orderInCategory="100"
android:showAsAction="never"
android:title="#string/action_settings"/>
<item
android:id="#+id/home"
android:icon="#drawable/ic_action_search"
android:orderInCategory="1"
android:showAsAction="always"
android:title="Search"/>
<item
android:id="#+id/java"
android:icon="#drawable/ic_action_share"
android:orderInCategory="2"
android:showAsAction="always"
android:title="Share"/>
<item
android:id="#+id/android"
android:icon="#drawable/ic_action_person"
android:orderInCategory="3"
android:showAsAction="always"
android:title="Account"/>
</menu>
I get the output as below::
Problem I am facing::
I am not able to get both Icon and button text ?
Is it not possible to obtain both ? if so how ?
Or is it we have to use only either one of them ?
You should use 'withText' value as well in the showAsAction attribute.
So the menu item will now look like,
<item
android:id="#+id/android"
android:icon="#drawable/ic_action_person"
android:orderInCategory="3"
android:showAsAction="always|withText"
android:title="Account"/>
Also, note it will ultimately depend upon the space available in the ActionBar. One cannot force it and in case if space is not enough it will end up as an overflow for the overflowing content.
Try android:showAsAction="always|withText"

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

Overflow Actionbar items not displaying on bottom bar

I am trying to add items to the bottom action bar on android. I have placed the following into my manifest as required by what I've read on Google dev.
android:uiOptions="splitActionBarWhenNarrow"
and I have a layout file as follows:
<item
android:id="#+id/menu_settings"
android:orderInCategory="100"
android:showAsAction="ifRoom"
android:title="#string/menu_settings"
android:visible="true"/>
<item
android:id="#+id/activityhomemen"
android:orderInCategory="100"
android:showAsAction="always"
android:title="#string/activityhomemen"
android:visible="true"/>
<item
android:id="#+id/activity1men"
android:orderInCategory="100"
android:showAsAction="always"
android:title="#string/activity1men"
android:visible="true"/>
<item
android:id="#+id/activity2men"
android:orderInCategory="100"
android:showAsAction="always"
android:title="#string/activity2men"
android:visible="true"/>
<item
android:id="#+id/activity3men"
android:orderInCategory="100"
android:showAsAction="always"
android:title="#string/activity3men"
android:visible="true"/>
<item
android:id="#+id/activity4men"
android:orderInCategory="100"
android:showAsAction="always"
android:title="#string/activity4men"
android:visible="true"/>
<item
android:id="#+id/activity5men"
android:orderInCategory="100"
android:showAsAction="always"
android:title="#string/activity5men"
android:visible="true"/>
<item
android:id="#+id/activity9men"
android:orderInCategory="100"
android:showAsAction="ifRoom"
android:title="#string/activity5men"
android:visible="true"/>
<item
android:id="#+id/activity6men"
android:orderInCategory="100"
android:showAsAction="ifRoom"
android:title="#string/activity5men"
android:visible="true"/>
<item
android:id="#+id/activity7men"
android:orderInCategory="100"
android:showAsAction="ifRoom"
android:title="#string/activity5men"
android:visible="true"/>
<item
android:id="#+id/activity8men"
android:orderInCategory="100"
android:showAsAction="ifRoom"
android:title="#string/activity5men"
android:visible="true"/>
<item
android:id="#+id/activity9men"
android:orderInCategory="100"
android:showAsAction="ifRoom"
android:title="#string/activity5men"
android:visible="true"/>
When I run the application on the emulator I can see the first 5 items of the menu. When I click on the overflow button I see the remaining items. Should they not be appearing on the bottom bar because of what I inserted into the manifest?...
Any help is much appreciated.
Below is screen of emulator. As you can see, overflow contains items and no bar showing at bottom...
If you want always show those items at the bottom. You can use tab widget in addition to you action bar. It will look like action bar on 4.0+.
http://developer.android.com/reference/android/widget/TabWidget.html
Update:
http://developer.android.com/reference/android/support/v13/app/FragmentTabHost.html - here is this class, that helps to add fragment navigation

Categories

Resources