Android Studio - just can't get action bar / overflow to work? - android

I'm using Android Studio (actually on Mac), only using real devices
This is 4.1+ only. All projects created from fresh.
CHECK - I did load support and appcompat, as best as I can understand Gradle. [A]
CHECK - onCreateOptionsMenu, etc, looks good...
CHECK - xml is good to go. (I do totally understand the showAsAction options, and tried them all.) [B] Regarding using text or an icon, I tried all permutations.
So what happens?
When I run it on a device (10+ tested). It simply shows as many action bar items as can fit (say, 5 or so). Rotation etc. works perfectly.
But it just will not show the overflow icon!! WTF?? It simply does not show, anywhere, the missing three or four items.
I have tried all this with both "Blank Activity" and "Fullscreen Activity". No matter WHAT I do, it won't show the ##$# overflow.
It's almost like the icon is just not available in the build or something??
Can any Android friends psychic this problem? It's a really "WTF" moment. Thanks in advance.
My workaround ... https://stackoverflow.com/a/22855136/294884 That works great, but you Android guys would laugh at me doing that.
[A]: (Note that I have two build.gradle files; I did it on the inner one inside app/ . Wouldn't work on the outer one.)
[B]: (Note, a common question seems to be when people don't get the difference between 'always' and 'ifRoom'. TBC that is not my problem at all: my problem is the #$## overflow simply will not appear!!)
BTW for anyone new to Android ...
https://stackoverflow.com/a/16046189/294884
that extended discussion may be very useful.

Press "File" in the top left corner of Android Studio, select "Project Structure...". A Dialog will be opened with a list of modules in the left side.
Select the module of your project, go to the tab "Dependencies", press the green "+" on the right, select "Library Dependencies" in the next Dialog you will be able to add the libraries you want.
If "Support v4" and "AppCompat" are not available you should first install "Android Support Library" and "Google Repository" via the Android SDK Manager.

That will be my best guest. Devices with hardware button don't show the 3-dots menu.
Also if the project is 4.1+ you don't need neither support-v4 nor appcompat-v7. Those might be causing some conflict.
Link to Google explanation on buttons on different devices:
http://developer.android.com/design/patterns/compatibility.html
Regarding using the build.gradle file or the dialog, well, probably yes, but I'm already used to the gradle file and never even look at the dialog, but I'm just old school.
Result!
Found Dirty Hack to force the overflow icon to be visible on devices which have the hardware menu button.
private void getOverflowMenu() {
try {
ViewConfiguration config = ViewConfiguration.get(this);
Field menuKeyField = ViewConfiguration.class.getDeclaredField("sHasPermanentMenuKey");
if(menuKeyField != null) {
menuKeyField.setAccessible(true);
menuKeyField.setBoolean(config, false);
}
} catch (Exception e) {
e.printStackTrace();
}
}
Source:http://www.tagwith.com/question_264107_overflow-menu-not-showed-at-action-bar

I had similar problems showing action bar icons when starting to use Android Studio..
Strange that when I looked at the layout in the design screen it did showed the icons properly but when I tried to run the app both on actual device or on the emulator it showed 3 dots instead.
I do know that even on devices that have HW setting button I still see applications that shows action bar icons and not 3 dots.
Finally the only thing that helped was to do this:
// compile 'com.android.support:appcompat-v7:21.0.0'
I comment this library dependency in the gradle that fixed the problem.

I have the Something like this, when i moved my project to android studio, all action bar items instead if being displayed on the action bar, they only appear as text when pressing the hardware button menu, and when run on nexus, the three dots appear in the corner of the action bar !
i tried things suggested on this page, but had no success in showing the items on the action bar !

Related

Android Studio: No Menu Icon Showing

I'm new to Android Studio and I am trying to create a note app. However, I can't seem to interact with my action bar at all.
I am using the latest version of Android Studio. I was looking some tutorials of Android Studio, videos of one year ago, and in the videos, the app emulator showed 3 dots (the settings icon) on the top-right corner of the action bar. However, mine doesn't create it. It doesn't create any menu icon. In fact, I do NOT have a menu sub-folder on my RES folder, and my MainActivity.java does NOT have the onCreateOptionsMenu and onOptionsItemSelected methods that should be created by default.
Any way I can fix this? How can I add a simple icon my action bar?
Thank you
You can add these methods manually by clicking CTRL+O (shortcut for override methods) and choose these two methods from the list.
You can also write them from scratch or copy-paste them from somewhere.
EDIT:
Try all the different templates in the New Project menu. Maybe some of them works for you. And good luck. This appears to be some weird bug.

How can I get the ActionBar to render?

I'm a new to Android development and I've been giving Android Studio a spin. I've followed Google's tutorial and I still haven't been able to get the ActionBar up and running either on the emulator or on the real device. I've specified the min version in the manifest file and I've also edited the menu and activity xml files accordingly.
Confusingly, the UIs shown in the activity_foo.xml and menu_foo.xml are different:
activity_foo.xml:
menu_foo.xml:
Even more confusingly, the final app when built shows both the Search and Settings in the hamburger menu though I do not recall seeing it in the GUI previews:
How can I fix this?
Confusingly, the UIs shown in the activity_foo.xml and menu_foo.xml are different
They are supposed to be different. One is showing you a layout file. The other is showing you a menu resource. Their previews are not supposed to necessarily match. After all, an Android app that is bigger than a breadbox will have many layout resources, few of which will be defining the contents of an activity.
For those layouts that do define the contents of an activity, IIRC, you can have the same tools:context=".FooActivity" in the root element of your layout file, and the preview may take that into account.
Even more confusingly, the final app when built shows both the Search and Settings in the hamburger menu though I do not recall seeing it in the GUI previews:
In the preview, the search item is represented by a toolbar-style button (icon is a magnifying glass).
In your menu resource, you have one <item> that has android:showAsAction and one <item> that has app:showAsAction. Either you are using the appcompat-v7 action bar backport, or you are not. That would be determined by things like:
what Java class your activity inherits from (ActionBarActivity or AppCompatActivity for appcompat-v7)
what theme you are using for the activity in your manifest (if it is based on Theme.AppCompat.*, you are using appcompat-v7)
If you are using appcompat-v7, you need to change the android:showAsAction to app:showAsAction. Given the results of your run of the project in the emulator, my guess is that you are using appcompat-v7. If you make the change to the menu resource and run the project again, you may see the search item show up as the magnifying glass icon, as you see in the preview. I say "may" because there may or may not be room to show that toolbar-style icon, depending on screen size and orientation of the device that runs your app — action bar items with ifRoom will show as toolbar-style buttons if there is room or will fall into the overflow menu if not.

Robotium - Trying to go click through menu

I have a menu in my app that i am trying to iterate trough. The menu consists of more than 10 items, but i only want to test the first 5 items (which i can select with either index or based on text).
I am looking for a generic solution that will
select menu item 1
do a text check
select main menu
select menu item 2
do a text check
select main menu
etc
However i also need to execute this on multiple devices with different screen sizes, so it has to scroll to the menu item in case its not yet visible on screen.
I've tried using different solutions from these boards, but i have not been able to succeed yet.
Any help would be greatly appreciated.
The issue here is because of a bug in robotium that was fixed after the latest release. The issue in question is https://code.google.com/p/robotium/issues/detail?id=550
The latest code on github does have this fix in (see here, so you could package the source yourself and use that as the latest version otherwise you are going to have to implement some methods that have the same functionality as that changed.
Edit
Robotium 5.0.1 is now available and should have the above fix in it.

Remove Android options menu in XE5 Delphi

Is there a way to completely remove the Android options menu in XE5 Delphi? I've been testing my application on a HTC One and because my phone doesn't have a menu button and my application doesn't have an options button, android automatically adds a options menu. Since this button is added by Android there is no way to add items to the menu.
I've already tried to change the minimal SDK version, but this makes the application very unstable and makes it crash when the orientation is changed:
<uses-sdk android:minSdkVersion="14" />
Is there an other way to remove the options menu? Now there is just a large options menu in the bottom of my screen that has no menu items.
Ok, you're right in that this empty action overflow menu is added because of your lack of hardware menu button.
On a Nexus 7 it's not such an issue as the empty overflow menu is added at the end of the other soft buttons.
On a HTC One, however, you can configure the Home button to act as a menu button, which removes the action overflow button.
It's not correct to say you can't add items to the menu. My Android session at CodeRage 8 shows how to add menu items. However, I'll grant you, it's a bit of a faff.
In order to remove it, the docs say you should set the targetSdkVersion attribute (not minSdkVersion) in your Android manifest to 14 (see this blog post for details). However having tried this it causes a crash if you don't prevent rotation in the RTM version of XE5, as you saw with your tests. This issue is sat in QC, logged some weeks back, hopefully to receive a fix in the near future.
However you should consider restricting the rotation as one course of action...... This is easy enough.
you must change in manifest android:configChanges="orientation|keyboardHidden">
to:
android:configChanges="orientation|keyboardHidden|screenSize">
then you can set minsdk, maxsdk, targetsdk as you want, and application will not crash

Standard Android menu icon for multiselect action

In my first application there is an activity using a GridView layout and an option menu. One of the menu items is "Multiselect" (the same that you can see in the standard Gallery application when you navigate a gallery). My current problem is that I can't find the standard multiselect icon anywhere. I've tried the following:
Eclipse completion capabilities by typing android.R.drawable. and inspecting the list that eclipse shows to me
searching the android-sdk-linux/platforms/android-X/data/res/drawable-XX
searching https://android.googlesource.com/platform/frameworks/base/+/master/core/res/res
visiting http://androiddrawableexplorer.appspot.com/ and similar websites
Where can I find the multiselect icon?
I can't see the icon you are referring to on my build (Android 4.1.1) but when looking for system drawables I have found them in the SDK under a path like;
C:\Program Files\Android\android-sdk\platforms\android-16\data\res\drawable-<your_screen_res>
The "more" icon for menus is called ic_menu_moreoverflow_<some style>_<some theme>.png. I'm sure the icon you are looking for is there...
Edit
Went away and found the icon by setting up an emulator at 2.1, here it is.
Look similar to ic_menu_mark and btn_check_off but admittedly not quite the same!
Finally I got the icon. After googling a little bit I found that GridView doesn't implement native support of multiple selection items. So the multiselect icon is not a standard Android icon and is not distributed with the SDK. The icon is part of the camera application. You can see it in CyanogenMod repo android_packages_apps_Gallery under /res/drawable-hdpi. The icon filename is ic_menu_multiselect_gallery.png.

Categories

Resources