2017-12-13 22 views
-2

hinzu Ich möchte ein benutzerdefiniertes Layout zu der menuitem in menu.xml-Datei hinzufügen.Android: Fügen Sie ein benutzerdefiniertes Layout in Menüelement

LinearLayout actionItemLayout = (LinearLayout) menu.findItem(R.id.itemMenu).getActionView(); 
TextView txtNumber = (TextView)actionItemLayout.findViewById(R.id.txt_vehicleNumber); 
TextView txtName = (TextView)actionItemLayout.findViewById(R.id.txt_vehicleName); 

Ich habe so getan, aber jedes Mal actionItemLayout gibt null.

Bitte helfen

+2

Wo ist 'Menü' definiert? Bitte zeigen Sie eine [mcve] –

+0

Mögliche Duplikate von [Benutzerdefinierte Ansicht für Menüeintrag] (https://stackoverflow.com/questions/26259162/custom-view-for-menu-item) – ADM

+0

Ich versuchte in OnCreateOptionsMenu und OnPrepareOptionsMenu beide Methoden – sushma1008

Antwort

0

In Ihrem Toolbar.xml hinzufügen:

local:popupTheme="@style/ThemeOverlay.AppCompat.Light" 

und in Ihrem style.xml definieren Stil:

<style name="MyMaterialTheme.PopupOverlay" 
    parent="ThemeOverlay.AppCompat.Light" > 
    <item name="android:popupMenuStyle">@style/PopupMenu</item> 
    <item name="android:colorBackground">@color/background</item> 
    <item name="android:textColor">@color/colorAccent</item> 
    </style> 

und in Ihrer Aktivität verwenden onCreateOptionsMenu:

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
MenuInflater inflater = activity.getMenuInflater(); 
    inflater.inflate(R.menu.menu_main, menu); 

MenuItem filter_menu, profile_menu, purchage_menu; //Replace by your menu items 

    filter_menu = menu.findItem(R.id.action_filter); 
    menu_language = menu.findItem(R.id.menu_item_language); 
    login_menu = menu.findItem(R.id.action_login); 
    } 

und nutzen diese für Klick:

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 

     case R.id.action_search: 
     final Intent searchIntent = new Intent(MainActivity.this, 
     SearchActivity.class); 
      searchIntent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION); 
      startActivity(searchIntent); 
      // Not implemented here 
      return false; 
     case R.id.action_filter: 

      // Not implemented here 
      return false; 
     case R.id.action_login: 

      Intent loginIntent = new Intent(MainActivity.this, 
      LoginActivity.class); 
      Util.check_for_subscription = 0; 
      startActivity(loginIntent); 
      // Not implemented here 
      return false; 
0

Es funktioniert folgenden Code

getMenuInflater().inflate(R.menu.menu, menu); 
MenuItem item = menu.findItem(R.id.itemMenu); 
MenuItemCompat.setActionView(item, R.layout.layout_menu); 
LinearLayout rootView = (LinearLayout) 
MenuItemCompat.getActionView(item); 

Textview txtNumber = (Textview) rootView.findViewById (R.id.txt_vehicleNumber); TextView txtName = (Textansicht) rootView.findViewById (R.id.txt_vehicleName);

Dies funktioniert für mich

Verwandte Themen