我想将自定义布局添加到menu.xml文件中的menuitem
。
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。
请帮忙
答案 0 :(得分:1)
使用以下代码
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 =(TextView)rootView.findViewById(R.id.txt_vehicleName);
这对我有用
答案 1 :(得分:0)
在你的Toolbar.xml中添加:
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>
并在您的Activity中使用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);
}
并将其用于点击:
@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;