I've got an app that I've written targeting Android 2.1 which makes use of the menu button to expose some options. I'd like to have this menu available through the action bar overflow button in ICS, but I'm having trouble with getting it to show up.
If I change my target API to 15, the legacy menu button in the bottom bar disappears in ICS, but the icon in the top right of the action bar doesn't replace it, so there is no way to access the menu. I've tried adding the showAsAction attribute to the menu items, which did nothing. I'm definitely targeting 4.0.3 in my Eclipse build options.
All I want is for that menu to be accessible somewhere whilst using the ICS Holo theme, but still backwards compatible to older devices. How do I go about that?
Usually you add those Action Items simply by implementing the onCreateOptionsMenu(Menu menu) and adding the android:showAsAction="ifRoom" for the desired items in the menu's XML file.
e.g.
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="#+id/menu_save"
android:icon="#drawable/ic_menu_save"
android:title="#string/menu_save"
android:showAsAction="ifRoom|withText" />
</menu>
Did you consider this fact?
Edit:
Here is a simple implemantation which worked for me a while ago:
#Override
public boolean onCreateOptionsMenu(Menu menu){
super.onCreateOptionsMenu(menu);
createMenu(menu);
return true;
}
private void createMenu(Menu menu){
MenuItem mnu1 = menu.add(0, 0, 0, "Logout");
{
mnu1.setAlphabeticShortcut('a');
mnu1.setIcon(R.drawable.icon);
mnu1.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
}
}
I was having this issue 5 minutes ago. Dont know if this can be still helpful, but this is how I got it solved:
Add super.setBooleanProperty("showTitle", true); to your onCreate method
#Override
public void onCreate(Bundle savedInstanceState) {
super.setBooleanProperty("showTitle", true);
super.onCreate(savedInstanceState);
//more code...
This will force the action bar to show and the menu button replacement will be there.
I am targeting android 4 in eclipse. Older devices show the bar as title only and of course are listening to default menu button action.
Related
Contextual Action Bar (CAB) won't disable using Crosswalk as a plugin in Cordova.
Tried everything, starting with the CSS, all the way through HTML & JavaScript, and even MainActivity.java & XWalkCordovaView.java.
I must disable the Contextual Action Bar. It cannot show up. It's messing my entire app. It needs to be gone, completely. Or at least, I settle with not seeing it in my app.
Here are some pictures:
As you see, we need to select text and show that toolbar (the black one, and disable the blue contextbar, prevent it from showing at all). It's not allowing us to use our toolbar. I mean, with Contextual Action Bar, NO WYSIWYG will work nicely.
I even have problems with the arrow select, which I'd like to disable as well, or at least change the color, or not mess up the sidenav.
So, what I tried:
MainActivity.java
#Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Set by <content src="index.html" /> in config.xml
loadUrl(launchUrl);
// disable the context menu and all long clicks
super.appView.getView().setOnLongClickListener(new View.OnLongClickListener() {
public boolean onLongClick(View v)
{ return true; }
});
super.appView.getView().setLongClickable(false);
}
}
From here:
How to disable long-click which opens the Android top menu bar with copy/paste/etc. buttons in Cordova Crosswalk apps?
Pull Request: https://github.com/crosswalk-project/crosswalk/pull/3193
Now, please, I need to disable the Contextual Action Bar when I select some text. Thank you so much in advance. I've searched the whole web and nothing seems to work.
I've filled an issue on Crosswalk Project's Issues:
https://crosswalk-project.org/jira/browse/XWALK-7206
I recently tried something different for my on development app but don't know how it works. I'm trying to add different actions (eg. Search)to each Tabs in more than one toolbar. I don't know how to explain my view well but the images below can make you understand what I'm trying to.
In the Contacts tab there is a add user icon in toolbar and in the calls tab you can see add calls icon in toolbar and in the Chats tab you can see chats icon in toolbar. My question is how to give different ifRoom settings to different tabs like the above app. Hope it is well explained to get the right answer :)
Thanks in Advance :)
Follow this code.
Add toolbar in your Activity, like you did.
Create menu for each fragment res/menu/menu_one.xml and ...
Add onCreateOptionsMenu and onOptionsItemSelected in each fragment, like this:
.
#Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu, menu);// add menu which you created in step 2
return true;
}
#Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
switch (id) {
case R.id.action_settings:
// do stuff, like showing settings fragment
return true;
}
return super.onOptionsItemSelected(item); // important line
}
And in onCreate add this like: setHasOptionsMenu(true);
And it is it! :)
I know it has been asked several times before. But I guess I have to ask the question myself because none of the existing ones fits my problem:
I am developing for Kitkat(4.4) and try to use a action bar with the theme: holo.light.darkActionBar.
I created some xml files with the items in menu and linked it in the java class to the activity:
menu/main:
<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_filter"
android:title="#string/action_filter"
android:orderInCategory="100"
android:icon="#drawable/ic_action_filter"
app:showAsAction="ifRoom" />
MainActivity:
#Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
menu.clear();
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
The Problem is the following:
When I click on the menu/main.xml I can see that a item is added to the actionbar. But it never appears in the activity_main.xml.
I searched for many hours and considered the following:
-set minSDK to 19
-i know that some time it does not show up because the device has a menu button. But I use a icon and say it should be displayed. Therefore it should show up. And I also use a Nexus Emulation which has not menu button.
-I use Android studio and inserted the activities with the assistentce of android studio.
-The mainActivity extends FragmentActivity(because I chose to have a google maps activity)
-I tried other themes but then the actionbar disappears totally(oc did not use .noActionBar!)
-I set a style for the actionbar and there I specify a red color. This color is propagated to the activity but not the items.
my imports are:
import android.support.v4.app.FragmentActivity;
import android.os.Bundle;
import android.view.Menu;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.SupportMapFragment;
How it should look:
How it looks rightnow:
I really really hope some of you can help me, it drives me nuts.
I think, your code to inflate the menu should look like this :
#Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu items for use in the action bar
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.main_activity_actions, menu);
return super.onCreateOptionsMenu(menu);
}
And remove menu.clear() line.
try to use a action bar with the theme: holo.light.darkActionBar
That means that you are trying to use the native action bar.
I created some xml files with the items in menu and linked it in the java class to the activity
Get rid of the app namespace, and rename app:showAsAction to be android:showAsAction. The app convention is used for the appcompat-v7 action bar backport, which you are not using.
MainActivity:
Get rid of menu.clear().
But it never appears in the activity_main.xml.
It is not supposed to. It should show up when you run the app, not necessarily in editors for other resources.
And I also use a Nexus Emulation which has not menu button
There certainly were Nexus devices with MENU buttons. Try pressing PgUp; if you get the overflow menu rising from the bottom of the screen, your emulator has a MENU button.
I am running an app in full screen immersive mode.
On Samsung phones there is a menu button on the device that, when clicked, forces open the status bar at the top. This slides my entire view down and doesn't go away.
How can I prevent the menu click event from displaying the status bar?
Found it, put this in the activity.
#Override
public boolean onPrepareOptionsMenu (Menu menu)
{
return false;
}
I am following the tutorial on the developer website to implement an action menu bar, and I cant seem to get the icon to be drawn. http://developer.android.com/training/basics/actionbar/adding-buttons.html
Here is what I have so far...
res/menu/main_activity_actions
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<!-- Search, should appear as action button -->
<item android:id="#+id/action_search"
android:icon="#drawable/ic_action_search"
android:title="#string/action_search"
android:showAsAction="ifRoom" />
<!-- Settings, should always be in the overflow -->
<item android:id="#+id/action_settings"
android:title="#string/action_settings"
android:showAsAction="never" />
</menu>
Then I added that menu to the main activity
#Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu items for use in the action bar
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.main_activity_actions, menu);
return super.onCreateOptionsMenu(menu);
}
I am pretty sure the icon can be found because I added it in all res/drawable-* folders
Then when I run the virtual device this is what I get
As you can see, the 2 menu items are there, but search has no icon like it does in the tutorial. Heres what it's supposedly supposed to look like
I have been going through the tutorials as well, and ran into the same difficulty. Here is what I found.
I spent a few hours trying the various technical solutions given for the problem. None of them made sense given my context. I tried a few things that seemed to suggest themselves to no avail. Then I found another possible solution, and although quite a bit simpler, perhaps harder to debug.
Make sure that the icons you provide are from the action bar icons in the path: holo_dark -> 01_core_search.
The holo_light icons were the same color as the background of my device and so appeared as if not present. Press on the screen in that area, and the icon does appear because the background color changes with selection of the menu item.
Hope this helps.