Android开发

4、对话框与菜单的使用:


自定义Menu的实现方法

一:先写一个自定义的菜单布局
这个布局可以根据业务需要任意写

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingLeft="10dip"
android:paddingRight="10dip"
android:gravity="center"
android:text="收藏"
android:drawableLeft="@mipmap/me_collect"
android:drawablePadding="3dp"
android:textColor="@color/title_color"
android:clickable="true" />
二:在menu的item中引用该布局
这了用到了app:actionLayout来指定自定义菜单布局,需要注意的是必须是app:actionLayout,而不应该是android:actionLayout,否则onCreateOptionsMenu方法中的getActionView()方法会返回null。

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<!--
1:actionLayout用于指定你自定义的菜单布局;
2:必须是app:actionLayout,而不应该是android:actionLayout
否则onCreateOptionsMenu方法中的getActionView()方法会返回null
-->
<item android:id="@+id/flavor"
android:title=""
app:showAsAction="always"
app:actionLayout="@layout/head_flavor_menu" />
</menu>
三:onCreateOptionsMenu(Menu menu)中引用该布局
这一步的目的是将你自定义的菜单当成普通菜单处理,通过给自定义的菜单布局设置单击事件,让其在单击时执行onOptionsItemSelected(MenuItem item),从而让其像普通的Menu item一样在onOptionsItemSelected中处理点击事件就可以了。

@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.head_flavors, menu);
final MenuItem item = menu.findItem(R.id.flavor);
// getActionView()返回你自定义的菜单布局,设置单击事件的目的是,让其单击时执行onOptionsItemSelected,从而只需统一在onOptionsItemSelected处理即可
item.getActionView().setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
onOptionsItemSelected(item);
}
});
return super.onCreateOptionsMenu(menu);
}

posted @ 2022-05-13 08:01  萧贾jzm  阅读(19)  评论(0编辑  收藏  举报
//歌单id