2015-11-21 40 views
0

我正在嘗試向我的Android應用添加溢出菜單(三個點)。 它在預覽(Android Studio)上看起來很完美,但無法顯示在我的Samsung Galaxy Tab 2平板電腦上。爲什麼?Android溢出菜單作品在Android Studio預覽中完美顯示,但不會顯示在實際設備上

這裏是我做過什麼至今:

AndroidManifest.xml中

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.example.boci.helloworldandroidgithub" > 

    <application 
     android:allowBackup="true" 
     android:icon="@mipmap/ic_launcher" 
     android:label="@string/app_name" 
     android:supportsRtl="true" 
     android:theme="@style/AppTheme" > 
     <activity 
      android:name=".MainActivity" 
      android:label="@string/app_name" 
      android:theme="@style/AppTheme.ActionBar" > 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
    </application> 

</manifest> 

styles.xml

<resources> 

    <!-- Base application theme. --> 
    <style name="AppTheme" parent="ThemeOverlay.AppCompat.ActionBar"> 
     <!-- Customize your theme here. --> 
     <item name="colorPrimary">@color/colorPrimary</item> 
     <item name="colorPrimaryDark">@color/colorPrimaryDark</item> 
     <item name="colorAccent">@color/colorAccent</item> 
    </style> 
    <style name="AppTheme.ActionBar"> 
     <item name="windowActionBar">true</item> 
     <item name="windowNoTitle">false</item> 
    </style> 
    <style name="AppTheme.AppBarOverlay" parent="Base.ThemeOverlay.AppCompat.ActionBar" /> 
    <style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.ActionBar" /> 

</resources> 

styles.xml(V21)

<resources>> 
    <style name="AppTheme.ActionBar"> 
     <item name="windowActionBar">true</item> 
     <item name="windowNoTitle">false</item> 
     <item name="android:windowDrawsSystemBarBackgrounds">true</item> 
     <item name="android:statusBarColor">@android:color/holo_blue_light</item> 
    </style> 
</resources> 

MainActivity.java

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    MenuInflater inflater = getMenuInflater(); 
    inflater.inflate(R.menu.menu_main, menu); 

    return super.onCreateOptionsMenu(menu); 
} 

menu_main.xml

<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"> 

    <group android:checkableBehavior="single" android:enabled="true" > 

     <item android:id="@+id/main_red" 
      android:orderInCategory="1" 
      app:showAsAction="never" 
      android:title="@string/menu_red"> 
     </item> 

     <item android:id="@+id/main_green" 
      android:orderInCategory="2" 
      app:showAsAction="never" 
      android:title="@string/menu_green"> 
     </item> 

     <item android:id="@+id/main_blue" 
      android:orderInCategory="3" 
      app:showAsAction="never" 
      android:title="@string/menu_blue"> 
     </item> 

    </group> 

</menu> 

我應該配置些什麼,如果我想看到這三個點和選擇?

回答

0

溢出按鈕未示出的,因爲此代碼ActionBarPolicy

public boolean showsOverflowMenuButton() { 
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { 
     return true; 
    } else { 
     return !ViewConfigurationCompat.hasPermanentMenuKey(ViewConfiguration.get(mContext)); 
    } 
} 

正如你可以看到,如果該設備是奇巧的下如果設備具有一個硬件鍵不顯示溢出按鈕。

您可以覆蓋此設置,在您的ActivityonCreate方法添加以下代碼:

try { 
    ViewConfiguration config = ViewConfiguration.get(this); 
    Field menuKeyField = ViewConfiguration.class.getDeclaredField("sHasPermanentMenuKey"); 
    if (menuKeyField != null) { 
     menuKeyField.setAccessible(true); 
     menuKeyField.setBoolean(config, false); 
    } 
} catch (Exception ex) { 
} 
+0

這聽起來完全合乎邏輯的和我愛爾德接受爲一個正確的答案。然而,唯一的問題是,我仍然無法看到這三個血腥的點:-((或任何在操作欄上) –

相關問題