2014-01-12 20 views
0

我在android(開發)中有一個簡單的應用程序,我想讓它與2.0-> 4.3兼容,所以我想使用操作欄(讀取支持v7), 當我編寫代碼並執行在Android 2.3中運行例如操作欄保持美觀(請參閱此處我所談論的圖像),但在運行於vm 4.0+時不知道爲什麼,但操作項將轉到android底部(請參閱我所說的內容)如何將我的代碼更改爲在平臺中的行爲相同?爲什麼支持v7操作欄在Android 4.0+上進入屏幕底部

MainActivity.java

import android.graphics.Color; 
import android.graphics.drawable.ColorDrawable; 
import android.os.Bundle; 
import android.support.v7.app.ActionBar; 
import android.support.v7.app.ActionBarActivity; 
import android.support.v7.widget.PopupMenu; 
import android.util.Log; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.View; 

public class MainActivity extends ActionBarActivity { 

private final String TAG = this.getClass().getSimpleName(); 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    ActionBar actionBar = getSupportActionBar(); 
    actionBar.setBackgroundDrawable(new ColorDrawable(Color 
      .parseColor("#CCCCCC"))); 

} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    menu.clear(); 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.main, menu); 
    return true; 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getOrder()) { 
    case 1: 
     Log.i(TAG, "Tentando criar o actionbar menu."); 
     View menuItemView = findViewById(R.id.action_search); 
     PopupMenu popupMenu = new PopupMenu(this, menuItemView); 
     popupMenu.inflate(R.menu.popup_menu); 

     popupMenu.show(); 
     break; 
    } 
    return true; 
} 

} 

menu.xml文件

<menu xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:creditguard="http://schemas.android.com/apk/res-auto" > 

<item 
    android:id="@+id/action_search" 
    android:icon="@drawable/ic_action_accept" 
    android:orderInCategory="1" 
    android:title="Search" 
    creditguard:showAsAction="always"/> 
<item 
    android:id="@+id/action_search" 
    android:icon="@drawable/ic_action_accept" 
    android:orderInCategory="2" 
    android:title="Search" 
    creditguard:showAsAction="ifRoom|never"/> 

    </menu> 

的AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?> 
    <manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="br.com.creditguard" 
    android:versionCode="1" 
    android:versionName="1.0" > 

    <uses-sdk 
     android:minSdkVersion="7" 
     android:targetSdkVersion="18" /> 

    <!-- Permissions --> 
     ... 

    <application 
     android:allowBackup="true" 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" 
     android:theme="@style/Theme.AppCompat.Light.DarkActionBar" > 
     <activity 
      android:name="br.com.creditguard.MainActivity" 
      android:label="@string/app_name" 
      android:uiOptions="splitActionBarWhenNarrow" > 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

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

     <!-- Service declararion --> 
     <service/> 
      ... 
     </service> 

     <!-- Receiver to start service on boot --> 
     <receiver/> 

     </receiver> 
      ... 
     <!-- Widget --> 
     <receiver/> 
      ... 
     </receiver> 
    </application> 

    </manifest> 

對不起如果簡體h是不好的。

回答

1

這是因爲AndroidManifest.xmlandroid:uiOptions="splitActionBarWhenNarrow"屬性告訴android即可拆分操作菜單,如果有此屬性只能通過API級別14及更高版本(它是由舊版本忽略)理解之上

沒有足夠的空間。

要支持較早的版本,請添加一個元素作爲聲明「android.support.UI_OPTIONS」的相同值的每個元素的子元素。

<manifest ...> 
    <activity uiOptions="splitActionBarWhenNarrow" ... > 
     <meta-data android:name="android.support.UI_OPTIONS" 
        android:value="splitActionBarWhenNarrow" /> 
    </activity> 
</manifest> 

欲瞭解更多信息請參閱Android documentation

+0

大,我怎麼沒有看到o.O,現在這個工作的感謝! – ronniery