2017-11-28 8 views
-4

Ich möchte Bild in Menütitel hinzufügen.Wie man ein Bild zum Menütitel hinzufügt?

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

    <group android:checkableBehavior="single"> 
    <item 
     android:id="@+id/nav_admin" 
     android:icon="@drawable/ic_admin" 
     android:title="管理画面"/> 
    <item 
     android:id="@+id/nav_link" 
     android:icon="@drawable/ic_link" 
     android:title="このアプリについて" /> 
    <item 
     android:id="@+id/nav_logout" 
     android:icon="@drawable/ic_logout" 
     android:title="ログアウト" /> 

    </group> 

</menu> 

Hier nach Titelname möchte ich ein Bild im Menü hinzufügen. Wie kann ich das machen?

+0

hast du es gelöst ...? – Prem

Antwort

0

Sie Ihre benutzerdefinierte Ansicht erstellen und dann das so zu Ihrem Menüpunkt hinzufügen:

<item 
    android:id="@+id/nav_admin" 
    android:icon="@drawable/ic_admin" 
    android:title="管理画面" 
    app:actionLayout="@layout/my_custom_item" 
/> 

UPDATE:

ich in der Regel diese Sache in Code ändern:

public boolean onCreateOptionsMenu(android.view.Menu menu) { 
     MenuInflater inflater = getMenuInflater(); 
     inflater.inflate(R.menu.my_menu, menu); 
     getLayoutInflater().setFactory(new Factory() { 
      public View onCreateView(String name, Context context, 
        AttributeSet attrs) { 

       if (name.equalsIgnoreCase(
         "com.android.internal.view.menu.IconMenuItemView")) { 
        try { 
         LayoutInflater li = LayoutInflater.from(context); 
         final View view = li.createView(name, null, attrs); 
         new Handler().post(new Runnable() { 
          public void run() { 
           // set the text color, font, text size 
           Typeface face = Typeface.createFromAsset(
             getAssets(),"OldeEnglish.ttf");  
           ((TextView) view).setTypeface(face); 
           ((TextView) view).setTextSize(12); 
           ((TextView) view).setTextColor(Color.RED); 
          } 
         }); 
         return view; 
        } catch (InflateException e) { 
         //Handle any inflation exception here 
        } catch (ClassNotFoundException e) { 
         //Handle any ClassNotFoundException here 
        } 
       } 
       return null; 
      } 
     }); 
     return super.onCreateOptionsMenu(menu); 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     switch (item.getItemId()) { 
     case R.id.nav_admin: 
      //something 
      break; 
     case R.id.nav_logout: 
      //something 
      break; 
     case R.id.nav_link: 
      //something 
      break; 
     } 
     return false; 
    } 
} 
+0

@Zarei Wie kann ich den Stil des Titels ändern? –

+0

Was bedeutet das ?? Du willst den Effekt oder die Schrift ändern oder was ?? –

+0

meist Schrift und Textgröße –

0

Erstellen Sie zuerst auf IconizedMenu.Java

package project.student.dm.com.floatingactionbutton; 

/** 
* Created by PatelD on 04-10-2017. 
*/ 

import android.annotation.SuppressLint; 
import android.content.Context; 
import android.support.v7.view.SupportMenuInflater; 
import android.support.v7.view.menu.MenuBuilder; 
import android.support.v7.view.menu.MenuPopupHelper; 
import android.support.v7.view.menu.MenuPresenter; 
import android.support.v7.view.menu.SubMenuBuilder; 
import android.view.Menu; 
import android.view.MenuInflater; 
import android.view.MenuItem; 
import android.view.View; 

/** 
* Copied from android.support.v7.widget.PopupMenu. 
* "mPopup.setForceShowIcon(true);" in the constructor does the trick :) 
* 
* @author maikvlcek 
* @since 5:00 PM - 1/27/14 
*/ 
public class IconizedMenu implements MenuBuilder.Callback, MenuPresenter.Callback { 
    private Context mContext; 
    private MenuBuilder mMenu; 
    private View mAnchor; 
    private MenuPopupHelper mPopup; 
    private OnMenuItemClickListener mMenuItemClickListener; 
    private OnDismissListener mDismissListener; 

    /** 
    * Callback interface used to notify the application that the menu has closed. 
    */ 
    public interface OnDismissListener { 
     /** 
     * Called when the associated menu has been dismissed. 
     * 
     * @param menu The PopupMenu that was dismissed. 
     */ 
     public void onDismiss(IconizedMenu menu); 
    } 

    /** 
    * Construct a new PopupMenu. 
    * 
    * @param context Context for the PopupMenu. 
    * @param anchor Anchor view for this popup. The popup will appear below the anchor if there 
    *    is room, or above it if there is not. 
    */ 
    @SuppressLint("RestrictedApi") 
    public IconizedMenu(Context context, View anchor) { 
     mContext = context; 
     mMenu = new MenuBuilder(context); 
     mMenu.setCallback(this); 
     mAnchor = anchor; 
     mPopup = new MenuPopupHelper(context, mMenu, anchor); 
     mMenu.setCallback(this); 
     mPopup.setForceShowIcon(true); 
    } 

    /** 
    * @return the {@link android.view.Menu} associated with this popup. Populate the returned Menu with 
    * items before calling {@link #show()}. 
    * @see #show() 
    * @see #getMenuInflater() 
    */ 
    public Menu getMenu() { 
     return mMenu; 
    } 

    /** 
    * @return a {@link android.view.MenuInflater} that can be used to inflate menu items from XML into the 
    * menu returned by {@link #getMenu()}. 
    * @see #getMenu() 
    */ 
    @SuppressLint("RestrictedApi") 
    public MenuInflater getMenuInflater() { 
     return new SupportMenuInflater(mContext); 
    } 

    /** 
    * Inflate a menu resource into this PopupMenu. This is equivalent to calling 
    * popupMenu.getMenuInflater().inflate(menuRes, popupMenu.getMenu()). 
    * 
    * @param menuRes Menu resource to inflate 
    */ 
    public void inflate(int menuRes) { 
     getMenuInflater().inflate(menuRes, mMenu); 
    } 

    /** 
    * Show the menu popup anchored to the view specified during construction. 
    * 
    * @see #dismiss() 
    */ 
    @SuppressLint("RestrictedApi") 
    public void show() { 
     mPopup.show(); 
    } 

    /** 
    * Dismiss the menu popup. 
    * 
    * @see #show() 
    */ 
    @SuppressLint("RestrictedApi") 
    public void dismiss() { 
     mPopup.dismiss(); 
    } 

    /** 
    * Set a listener that will be notified when the user selects an item from the menu. 
    * 
    * @param listener Listener to notify 
    */ 
    public void setOnMenuItemClickListener(OnMenuItemClickListener listener) { 
     mMenuItemClickListener = listener; 
    } 

    /** 
    * Set a listener that will be notified when this menu is dismissed. 
    * 
    * @param listener Listener to notify 
    */ 
    public void setOnDismissListener(OnDismissListener listener) { 
     mDismissListener = listener; 
    } 

    /** 
    * @hide 
    */ 
    public boolean onMenuItemSelected(MenuBuilder menu, MenuItem item) { 
     if (mMenuItemClickListener != null) { 
      return mMenuItemClickListener.onMenuItemClick(item); 
     } 
     return false; 
    } 

    /** 
    * @hide 
    */ 
    public void onCloseMenu(MenuBuilder menu, boolean allMenusAreClosing) { 
     if (mDismissListener != null) { 
      mDismissListener.onDismiss(this); 
     } 
    } 

    /** 
    * @hide 
    */ 
    @SuppressLint("RestrictedApi") 
    public boolean onOpenSubMenu(MenuBuilder subMenu) { 
     if (subMenu == null) return false; 

     if (!subMenu.hasVisibleItems()) { 
      return true; 
     } 

     // Current menu will be dismissed by the normal helper, submenu will be shown in its place. 
     new MenuPopupHelper(mContext, subMenu, mAnchor).show(); 
     return true; 
    } 

    /** 
    * @hide 
    */ 
    public void onCloseSubMenu(SubMenuBuilder menu) { 
    } 

    /** 
    * @hide 
    */ 
    public void onMenuModeChange(MenuBuilder menu) { 
    } 

    /** 
    * Interface responsible for receiving menu item click events if the items themselves 
    * do not have individual item click listeners. 
    */ 
    public interface OnMenuItemClickListener { 
     /** 
     * This method will be invoked when a menu item is clicked if the item itself did 
     * not already handle the event. 
     * 
     * @param item {@link MenuItem} that was clicked 
     * @return <code>true</code> if the event was handled, <code>false</code> otherwise. 
     */ 
     public boolean onMenuItemClick(MenuItem item); 
    } 

} 

das Menü zu zeigen,

IconizedMenu popup = new IconizedMenu(MainActivity.this, view); 
MenuInflater inflater = popup.getMenuInflater(); 
inflater.inflate(R.menu.pop_up, popup.getMenu()); 

popup.setOnMenuItemClickListener(new IconizedMenu.OnMenuItemClickListener() { 
    @Override 
    public boolean onMenuItemClick(MenuItem item) { 
     Toast.makeText(MainActivity.this, item.getTitle().toString(), Toast.LENGTH_SHORT).show(); 
     return false; 
    } 
}); 
popup.show();//showing popup menu 

erstellen pop_up.xml,

<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    tools:context=".MainActivity"> 
    <item 
     android:id="@+id/add" 
     android:icon="@mipmap/ic_launcher" 
     android:title="Mathematics" /> 
    <item 
     android:id="@+id/sub" 
     android:icon="@mipmap/ic_launcher" 
     android:title="Chemistry" /> 
    <item 
     android:id="@+id/mul" 
     android:icon="@mipmap/ic_launcher" 
     android:title="Physics" /> 
    <item 
     android:id="@+id/div" 
     android:icon="@mipmap/ic_launcher" 
     android:title="Biology" /> 
</menu> 
Verwandte Themen