2017-12-13 37 views
-2

menu.xml 파일의 menuitem에 맞춤 레이아웃을 추가하고 싶습니다.Android : 메뉴 항목에 맞춤 레이아웃 추가

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); 

나는 actionItemLayout가 null주고있다이 있지만마다 같이 했어요. 당신의 스타일을 정의

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

하고 style.xml에서 :

<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> 

과의 onCreateOptionsMenu 당신의 활동에 사용

이를 추가하려면 Toolbar.xml에서

+2

'메뉴'는 어디에 정의되어 있습니까? –

+0

[메뉴 항목에 대한 사용자 정의보기]의 가능한 복제본 (https://stackoverflow.com/questions/26259162/custom-view-for-menu-item) – ADM

+0

onCreateOptionsMenu 및 onPrepareOptionsMenu 두 가지 방법 모두 시도했습니다 – sushma1008

답변

0

도와주세요

@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); 
    } 

클릭이를 사용 : 그것은 코드

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); 

텍스트 뷰 txtNumber = (텍스트 뷰) rootView.findViewById (R.id.txt_vehicleNumber) 다음 사용하여 작동

@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

; TextView txtName = (TextView) rootView.findViewById (R.id.txt_vehicleName);

나를 위해 일한다