功能的实现方式:
1.在res中新建menu文件夹-->main.xml文件,如下所示:
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/red"
android:title="@string/red_title"/>
<item
android:id="@+id/green"
android:title="@string/green_title"/>
<item
android:id="@+id/blue"
android:title="@string/blue_title"/>
</menu>
2. 对 base_activity.xml文件的修改
1)给该布局文件一个id方便在BaseAcitivity.java文件中对其进行修改
2)给弹出式菜单一个关联控件如下所示:
<ImageView
android:id="@+id/color"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_gravity="center_vertical"
android:src="@drawable/txt_color"
/>
3. 在BaseAcitivity.java文件里对每个id进行实例化操作
case R.id.color:
Log.d(TAG,"BaseActivity-->onClick-->color");
popupMenu=new PopupMenu(this,color);//关联该弹出式菜单与该imageview
getMenuInflater().inflate(R.menu.main, popupMenu.getMenu());//对弹出式菜单进行实例化
popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
//对每个菜单项进行监听
@Override
public boolean onMenuItemClick(MenuItem item) {
// TODO Auto-generated method stub
switch(item.getItemId()){
case R.id.red://如果按下的是红色标签
Log.d(TAG, "setBackgraound(RED)");
//获取当前的layout改变该layout的背景
((RelativeLayout)getLayoutInflater().inflate(R.layout.base_activity,null))
.setBackgroundResource(R.drawable.abcd);
Log.d(TAG, "LAYOUT="+(RelativeLayout)getLayoutInflater().inflate(R.layout.base_activity,null));
break;
case R.id.green:
Log.d(TAG, "setBackgraound(GREEN)");
break;
case R.id.blue:
Log.d(TAG, "setBackgraound(blue)");
break;
case R.id.color:
popupMenu.dismiss();
break;
default:
Toast.makeText(BaseActivity.this, "you clicked this menu!", Toast.LENGTH_LONG).show();
1.在res中新建menu文件夹-->main.xml文件,如下所示:
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/red"
android:title="@string/red_title"/>
<item
android:id="@+id/green"
android:title="@string/green_title"/>
<item
android:id="@+id/blue"
android:title="@string/blue_title"/>
</menu>
2. 对 base_activity.xml文件的修改
1)给该布局文件一个id方便在BaseAcitivity.java文件中对其进行修改
2)给弹出式菜单一个关联控件如下所示:
<ImageView
android:id="@+id/color"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_gravity="center_vertical"
android:src="@drawable/txt_color"
/>
3. 在BaseAcitivity.java文件里对每个id进行实例化操作
case R.id.color:
Log.d(TAG,"BaseActivity-->onClick-->color");
popupMenu=new PopupMenu(this,color);//关联该弹出式菜单与该imageview
getMenuInflater().inflate(R.menu.main, popupMenu.getMenu());//对弹出式菜单进行实例化
popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
//对每个菜单项进行监听
@Override
public boolean onMenuItemClick(MenuItem item) {
// TODO Auto-generated method stub
switch(item.getItemId()){
case R.id.red://如果按下的是红色标签
Log.d(TAG, "setBackgraound(RED)");
//获取当前的layout改变该layout的背景
((RelativeLayout)getLayoutInflater().inflate(R.layout.base_activity,null))
.setBackgroundResource(R.drawable.abcd);
Log.d(TAG, "LAYOUT="+(RelativeLayout)getLayoutInflater().inflate(R.layout.base_activity,null));
break;
case R.id.green:
Log.d(TAG, "setBackgraound(GREEN)");
break;
case R.id.blue:
Log.d(TAG, "setBackgraound(blue)");
break;
case R.id.color:
popupMenu.dismiss();
break;
default:
Toast.makeText(BaseActivity.this, "you clicked this menu!", Toast.LENGTH_LONG).show();
}
调用new PopupMenu(Context context,View ancher)创建下拉菜单,ancher代表激发该弹出式菜单的组件,
调用MenuInflater的inflater()方法将菜单资源填充到PopupMenu中,
调用PopMenu的show()方法显示弹出式菜单