2015-04-02 17 views
0

我想在ActionBar中的縱向和橫向模式下的所有3個圖標上顯示CollapseActionView中的一個圖標和兩個項目。我創建了兩個獨立的文件menu.xml,並將其放在端口和土地文件夾中。我的端口/ menu.xml文件:ActionBar圖標在景觀上不會更改

<menu xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:yourapp="http://schemas.android.com/apk/res-auto"> 
    <item 
     android:id="@+id/action_search" 
     android:icon="@drawable/ic_action_search" 
     yourapp:showAsAction="always" 
     android:inputType="textNoSuggestions" 
     yourapp:actionViewClass="android.support.v7.widget.SearchView" /> 
    <item 
     android:id="@+id/maps" 
     android:icon="@drawable/checkin" 
     android:title="@string/maps" 
     yourapp:showAsAction="collapseActionView" /> 
    <item 
     android:id="@+id/sort_by" 
     android:icon="@drawable/ic_action_content_sort" 
     android:title="@string/sort_by" 
     yourapp:showAsAction="collapseActionView" /> 
</menu> 

土地/ menu.xml文件:

<menu xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:yourapp="http://schemas.android.com/apk/res-auto"> 
    <item 
     android:id="@+id/action_search" 
     android:icon="@drawable/ic_action_search" 
     yourapp:showAsAction="always" 
     android:inputType="textNoSuggestions" 
     yourapp:actionViewClass="android.support.v7.widget.SearchView" /> 
    <item 
     android:id="@+id/maps" 
     android:icon="@drawable/checkin" 
     android:title="@string/maps" 
     yourapp:showAsAction="always" /> 
    <item 
     android:id="@+id/sort_by" 
     android:icon="@drawable/ic_action_content_sort" 
     android:title="@string/sort_by" 
     yourapp:showAsAction="always" /> 
</menu> 

出於某種原因,動作條根據儘管設備的方向端口/ menu.xml文件總是顯示。怎麼了?

+0

僅使用一個XML和使用showAsAction = |在第二和第三項 「ifRoom collapseActionView」。 – Harry 2015-04-02 13:00:30

+0

現在我將所有圖標顯示在兩個方向 – linkas 2015-04-02 13:04:11

回答

1

嘗試無效菜單和使用土地/端口menu.xml文件重建:

boolean isLandscape = false; 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 

    // Inflate the menu items for use in the action bar 
    MenuInflater inflater = getMenuInflater(); 

    if(isLandscape) { 
     inflater.inflate(R.land.menu, menu); 
    else 
     inflater.inflate(R.port.menu, menu); 

    return super.onCreateOptionsMenu(menu); 
} 

@Override 
public void onConfigurationChanged(Configuration config) { 
    super.onConfigurationChanged(config); 

    if (config.orientation == Configuration.ORIENTATION_LANDSCAPE) 
     isLandscape = true; 
    else if (config.orientation == Configuration.ORIENTATION_PORTRAIT) 
     isLandscape = false; 

    invalidateOptionsMenu() 
} 
+0

當我旋轉設備時它崩潰 – linkas 2015-04-02 14:29:41

0

後,我已經通過我自己想通了額外的研究。我只需要一個menu.xml文件,而不是定義showAsAction。我menu.xml文件:

<menu xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:yourapp="http://schemas.android.com/apk/res-auto"> 
    <item 
     android:id="@+id/action_search" 
     android:icon="@drawable/ic_action_search" 
     yourapp:showAsAction="ifRoom" 
     android:inputType="textNoSuggestions" 
     yourapp:actionViewClass="android.support.v7.widget.SearchView" /> 
    <item 
     android:id="@+id/maps" 
     android:icon="@drawable/checkin" 
     android:title="@string/maps" /> 
    <item 
     android:id="@+id/sort_by" 
     android:icon="@drawable/ic_action_content_sort" 
     android:title="@string/sort_by"/> 
</menu>