Android Studio - just can't get action bar / o

2020-02-02 00:24发布

问题:

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.

回答1:

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



回答2:

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.



回答3:

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.



回答4:

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 !