Action bar buttons showing only in overflow (not e

2019-08-15 12:17发布

问题:

I can only find solutions to this for the case of using the support library. Facts:

  1. build.gradle:

    dependencies {
        compile fileTree(dir: 'libs', include: ['*.jar'])
        compile 'com.android.support:design:22.2.0'
    }
    
  2. menu_main.xml:

    <menu xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools"                
    tools:context=".MainActivity">
    
    <item
        android:id="@+id/ab_main_share"
        android:showAsAction="ifRoom|withText"
        android:title="Share"
        android:icon="@drawable/ic_settings_input_antenna_black_24dp"
        android:actionProviderClass=
            "android.widget.ShareActionProvider" />
    
    <item
        android:id="@+id/ab_main_delete"
        android:showAsAction="ifRoom|withText"
        android:title="Delete"
        android:icon="@drawable/ic_delete_black_24dp" />
    
    <item android:id="@+id/action_settings"    android:title="@string/action_settings"
        android:orderInCategory="100" app:showAsAction="never" />
    
    </menu>
    
  3. MainActivity.java:

    public class MainActivity extends Activity {
    
    private ShareActionProvider mShareActionProvider;
    
    ...
    
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate menu resource file.
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.menu_main, menu);
    
        /** Getting the actionprovider associated with the menu item whose id is share */
        mShareActionProvider = (ShareActionProvider) menu.findItem(R.id.ab_main_share).getActionProvider();
    
        /** Setting a share intent */
        mShareActionProvider.setShareIntent(getDefaultShareIntent());
    
        return super.onCreateOptionsMenu(menu);
    }
    

And the result is that the actions appear in the overflow. I tried also to put just one action, but I get the same result. So it's not a problem of not having room in the action bar (and the name of the app or the application icon is not so wide).

Am I missing something? I did these thing before with the support library and had no problems, but this app is minSdkVersion 17, so there's no reason to use it anymore.

回答1:

Found it! The problem was in the Manifest. I had this in the activity declaration:

android:theme="@android:style/Theme.Holo.Light.Dialog"

Removed it and now I can see the action buttons in the action bar.