Android使用menu

1. 创建一个menu

1729259167085.png

1729940153876.png

2. 代码

menu.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
//id
<item android:id="@+id/message"
//图标
android:icon="@drawable/message"
//内容
android:title="消息"
//展示方式
app:showAsAction="never"/>
<item android:id="@+id/friend"
android:icon="@drawable/friend"
android:title="好友"/>
<item android:id="@+id/easy"
android:icon="@drawable/easy"
android:title="动态"/>
</menu>

showAsAction的属性介绍:

属性 介绍
ifRoom 如果有足够的空间,这个菜单项将显示在 ActionBar 上。如果空间不足,它将被放置在溢出菜单中。
always 总是尝试将这个菜单项显示在 ActionBar 上,即使空间不足。如果 ActionBar 上没有足够的空间,可能会显示不完整。
never 这个菜单项永远不会显示在 ActionBar 上,它只会出现在溢出菜单中。
withText ifRoomalwaysnever 结合使用。如果指定了这个值,菜单项的图标旁边会显示文本。如果没有足够的空间显示文本,那么只显示图标。
collapseActionView ifRoomalways 结合使用,并且当菜单项与一个 ActionView 相关联时使用。这允许 ActionView 在不活动时折叠成一个图标。

3. 对组件进行绑定

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
imageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
showPopupMenu();
}
});



private void showPopupMenu() {
// Inflate the menu; this adds items to the action bar if it is present.
PopupMenu popup = new PopupMenu(getContext(), imageView);
popup.getMenuInflater().inflate(R.menu.menu_options, popup.getMenu());

// 设置PopupMenu的菜单项点击监听器
popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
// Handle item selection
if (item.getItemId() == R.id.creat_group) {
Toast.makeText(getContext(), "create_group", Toast.LENGTH_SHORT).show();
return true;
} else if (item.getItemId() == R.id.add_friend) {
Toast.makeText(getContext(), "add_friend", Toast.LENGTH_SHORT).show();
return true;
} else if (item.getItemId() == R.id.input) {
Toast.makeText(getContext(), "input", Toast.LENGTH_SHORT).show();
return true;
}
return false;
}
});

// 显示PopupMenu
popup.show();
}

对组件进行点击事件的绑定。