您的位置:首页 > 产品设计 > 产品经理

一个在ActionBar上显示图标和菜单PopupMenu的小示例(19)

2016-02-27 00:00 701 查看
摘要: 在ActionBar上显示图标,和配合菜单PopupMenu使用看看显示的的布局效果

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 注意要改版本
ActionBar actionBar = getActionBar();
// 设置是否将图标转换为可点击的按钮,并加一个箭头图标,系统默认的图标
// actionBar.setDisplayHomeAsUpEnabled(true);//这一句就可以实现图片和点击
actionBar.setHomeButtonEnabled(true);// 转为可点击
// 不用系统默认的,自己给图标,要API 14版本
actionBar.setIcon(R.drawable.ie_arrow_normal);
actionBar.setTitle("返回");
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
MenuItem item = menu.findItem(R.id.action_more);
ImageView imageView = (ImageView) item.getActionView();
imageView.setImageResource(R.drawable.skin_aio_more_nor);
// 点击这个图片按钮的时候给一个监听事件
imageView.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
// 点击中弹出一个PopupMenu
PopupMenu popupMenu = new PopupMenu(MainActivity.this, v);// v里面的每一项视图
popupMenu.getMenu().add(Menu.NONE, 1, Menu.NONE, "添加");
popupMenu.getMenu().add(Menu.NONE, 2, Menu.NONE, "收藏");
popupMenu.getMenu().add(Menu.NONE, 3, Menu.NONE, "返回");

popupMenu
.setOnMenuItemClickListener(new OnMenuItemClickListener() {

@Override
public boolean onMenuItemClick(MenuItem item) {
switch (item.getItemId()) {
case 1:
Toast.makeText(MainActivity.this, "添加", 100)
.show();
break;

case 2:
Toast.makeText(MainActivity.this, "分享", 100)
.show();
break;
case 3:
Toast.makeText(MainActivity.this, "返回", 100)
.show();
break;
}
return false;
}
});
popupMenu.show();
}
});
return super.onCreateOptionsMenu(menu);
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_add:
Toast.makeText(MainActivity.this, "添加", Toast.LENGTH_SHORT).show();
break;

case R.id.action_camera:
Toast.makeText(MainActivity.this, "照相", Toast.LENGTH_SHORT).show();
break;
case R.id.action_call:
Toast.makeText(MainActivity.this, "打电话", Toast.LENGTH_SHORT).show();
break;
case android.R.id.home:// ActionBar的返回图标
Intent intent = new Intent(this, MainActivity.class);
intent.addFlags(intent.FLAG_ACTIVITY_CLEAR_TOP);// 将上面的页面清除掉,跟SingleTaskTop差不多的效果
startActivity(intent);
break;
}
return super.onOptionsItemSelected(item);
}
}

文件夹下的menu/菜单选项
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >

<item
android:id="@+id/action_add"
android:icon="@android:drawable/ic_menu_add"
android:orderInCategory="1"
android:showAsAction="always"
android:title=""/>
<item
android:id="@+id/action_camera"
android:icon="@android:drawable/ic_menu_camera"
android:orderInCategory="1"
android:showAsAction="always"
android:title=""/>
<item
android:id="@+id/action_call"
android:icon="@android:drawable/ic_menu_call"
android:orderInCategory="1"
android:showAsAction="always"
android:title=""/>
<item
android:id="@+id/action_more"
android:actionViewClass="android.widget.ImageView"
android:orderInCategory="1"
android:showAsAction="always"
android:title=""/>

</menu>

// // 设置导航模式,在另一Activity实现
// actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);// 下拉列表模式
// List<Map<String, String>> pullList = new ArrayList<Map<String,
// String>>();
// Map<String, String> option1 = new HashMap<String, String>();
// option1.put("option", "首页");
// Map<String, String> option2 = new HashMap<String, String>();
// option2.put("option", "下页");
// Map<String, String> option3 = new HashMap<String, String>();
// option3.put("option", "上页");
// pullList.add(option1);
// pullList.add(option2);
// pullList.add(option3);
// SimpleAdapter adapter = new SimpleAdapter(MainActivity.this,
// pullList, android.R.layout.simple_list_item_1,
// new String[] { "option" }, new int[] { android.R.id.text1 });
// actionBar.setListNavigationCallbacks(adapter,
// new OnNavigationListener() {
//
// @Override
// public boolean onNavigationItemSelected(int itemPosition,
// long itemId) {
// Toast.makeText(MainActivity.this,
// "你点中了第" + itemPosition+1 + "项",
// Toast.LENGTH_SHORT).show();
// return false;
// }
// });
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: