2017-07-21 57 views
9

如何創建的第一行像谷歌Chrome瀏覽器在水平排列的菜單項如何使菜單項水平

enter image description here

我創建的第一個項目,一個菜單孩子,但通過這種方式,我得到了一排將我發送到其他菜單,那麼如何使用菜單文件來做到這一點?我不希望使用對話框

這裏是我的菜單文件:

<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto"> 

    <group android:id="@+id/toolbar_menu" 
     android:visible="true"> 
    <item 
     android:id="@+id/item_tabs" 
     android:icon="@drawable/ic_tabs_24dp" 
     android:title="@null" 
     app:showAsAction="always"/> 
    <item 
     android:id="@+id/icon_row_menu_id" 
     android:title="@null" 
     android:visible="true"> 
     <menu> 
      <item 
       android:id="@+id/item_back" 
       android:icon="@drawable/ic_arrow_back_24dp" 
       android:title="@string/go_back" /> 
      <item 
       android:id="@+id/item_forward" 
       android:icon="@drawable/ic_arrow_forward_24dp" 
       android:title="@string/go_forward" /> 
      <item 
       android:id="@+id/item_bookmark_page" 
       android:icon="@drawable/ic_star_border_24dp" 
       android:title="@string/bookmark_this_page" /> 
      <item 
       android:id="@+id/item_download_page" 
       android:icon="@drawable/ic_download_24dp" 
       android:title="@string/download_page" /> 
      <item 
       android:id="@+id/item_info" 
       android:icon="@drawable/ic_info_outline_24dp" 
       android:title="@string/view_site_information" /> 
     </menu> 
    </item> 
    <item 
     android:id="@+id/item_new_tab" 
     android:title="@string/new_tab" /> 
    <item 
     android:id="@+id/item_new_incognito_tab" 
     android:title="@string/new_incognito_tab" /> 
    <item 
     android:id="@+id/item_bookmarks" 
     android:title="@string/bookmarks" /> 
    <item 
     android:id="@+id/item_history" 
     android:title="@string/history" /> 
    <item 
     android:id="@+id/item_downloads" 
     android:title="@string/download" /> 
    <item 
     android:id="@+id/item_settings" 
     android:title="@string/settings" /> 
    </group> 
</menu> 

在這裏我如何使用它:

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    mainMenu = menu; 
    MenuInflater inflater = getMenuInflater(); 
    inflater.inflate(R.menu.main_menu, menu); 
    return true; 
} 
+0

http://www.viralandroid.com/2016/01/android-custom-horizo​​ntal-icons-menu.html –

+0

但在這個例子中,他沒有使用菜單文件 –

+0

你試圖將圖標與圖標組合在一起

回答

0

您可以使用項目標籤的app:actionLayout="@layout/layout_name"財產一樣

<item 
android:id="@+id/menu_id" 
android:title="@string/title" 
app:showAsAction="never" 
app:actionLayout="@layout/layout_name"/> 

和您的layout_name是任何佈局文件,如

<LinearLayout 
android:layout_width="match_parent" 
android:layout_height="match_parent"> 

//在這裏添加您的水平菜單項

</LineearLayout> 

,你可以訪問此項目

@Override  
    public boolean onPrepareOptionsMenu(Menu menu) 
    { 
    MenuItem item = menu.findItem(R.id.menu_id); 
    Linearlayout rootView = (LinearLayout)item.getActionView(); 
    YourControlClass control = (YourControlClass) 
    rootView.findViewById(R.id.control_id);  
    return true;  
    }  
+1

同樣的問題沒有什麼變化 –

+0

你有沒有用在菜單項的水平佈局當然 – Anil

+0

是我做的 –

0

你也可以用彈出窗口試試這可能會幫助您檢查上面的代碼

popup.xml佈局文件不是菜單,

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:orientation="vertical" 
       android:background="@color/cardview_light_background" 
       android:layout_margin="20dp"> 

    <LinearLayout 
     android:layout_margin="5dp" 
     android:orientation="horizontal" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content"> 

     //your images with horizontal 

    </LinearLayout> 

    <LinearLayout 
     android:orientation="vertical" 
     android:layout_margin="5dp" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content"> 

     // your vertical list view 
    </LinearLayout> 
</LinearLayout> 

,您可以將以下代碼添加到的onClick()方法:

LayoutInflater layoutInflater 
         = (LayoutInflater) context 
         .getSystemService(LAYOUT_INFLATER_SERVICE); 

       final View popupView = layoutInflater.inflate(R.layout.popup, null); 
       final PopupWindow popupWindow = new PopupWindow(
         popupView, 
         ActionMenuView.LayoutParams.WRAP_CONTENT, 
         ActionMenuView.LayoutParams.WRAP_CONTENT, true); 

       popupWindow.setOutsideTouchable(true); 
       popupWindow.setFocusable(true); 


       popupWindow.setBackgroundDrawable(new BitmapDrawable()); 

       View parent = view.getRootView(); 

       popupWindow.showAtLocation(parent, Gravity.TOP|Gravity.END,0,0); 
+1

我已經說過我不想要Dialog或PopupWindow我想使它與菜單文件 –

+1

@AmineHarbaoui你不能有你的溢出菜單項的自定義視圖,所以Chrome沒有使用標準的操作欄。奇怪的是,Google甚至不使用自己的標準工具,它推動其他人使用,但這就是它的方式。 –