1.系统菜单
菜单页面布局
<?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">
<item android:id="@+id/red" android:title="红色" app:showAsAction="always"/>
<item android:id="@+id/blue" android:title="蓝色"/>
<item android:id="@+id/green" android:title="绿色"/>
</menu>
代码
package com.example.day0928;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu,menu);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()){
case R.id.red:
Toast.makeText(this, "红色", Toast.LENGTH_SHORT).show();
break;
case R.id.blue:
Toast.makeText(this, "蓝色", Toast.LENGTH_SHORT).show();
break;
case R.id.green:
Toast.makeText(this, "绿色", Toast.LENGTH_SHORT).show();
break;
}
return super.onOptionsItemSelected(item);
}
}
2.上下文菜单
菜单页面布局
<?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">
<item android:id="@+id/red" android:title="红色" app:showAsAction="always"/>
<item android:id="@+id/blue" android:title="蓝色"/>
<item android:id="@+id/green" android:title="绿色"/>
</menu>
代码
package com.example.day0928;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.ContextMenu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
public class Main2Activity extends AppCompatActivity {
private TextView textViewId;
private Button buttonId;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
textViewId = (TextView) findViewById(R.id.textView_id);
registerForContextMenu(textViewId);
buttonId = (Button) findViewById(R.id.button_id);
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
getMenuInflater().inflate(R.menu.menu,menu);
super.onCreateContextMenu(menu, v, menuInfo);
}
@Override
public boolean onContextItemSelected(MenuItem item) {
switch (item.getItemId()){
case R.id.blue:
Toast.makeText(this, "蓝色", Toast.LENGTH_SHORT).show();
break;
case R.id.red:
Toast.makeText(this, "红色", Toast.LENGTH_SHORT).show();
break;
case R.id.green:
Toast.makeText(this, "绿色", Toast.LENGTH_SHORT).show();
break;
}
return super.onContextItemSelected(item);
}
}
3.PopupMenu
菜单页面布局
<?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">
<item android:id="@+id/red" android:title="红色" app:showAsAction="always"/>
<item android:id="@+id/blue" android:title="蓝色"/>
<item android:id="@+id/green" android:title="绿色"/>
</menu>
代码
package com.example.day0928;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.MenuItem;
import android.view.View;
import android.widget.PopupMenu;
import android.widget.TextView;
import android.widget.Toast;
public class PopupActivity extends AppCompatActivity {
private TextView tv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_popup);
tv = (TextView) findViewById(R.id.tv);
tv.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
PopupMenu popupMenu = new PopupMenu(PopupActivity.this,tv);
popupMenu.inflate(R.menu.menu);
popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
switch (item.getItemId()){
case R.id.blue:
Toast.makeText(PopupActivity.this, "蓝色", Toast.LENGTH_SHORT).show();
break;
case R.id.red:
Toast.makeText(PopupActivity.this, "红色", Toast.LENGTH_SHORT).show();
break;
case R.id.green:
Toast.makeText(PopupActivity.this, "绿色", Toast.LENGTH_SHORT).show();
break;
}
return false;
}
});
popupMenu.show();
}
});
}
}
4.PopupWindow
菜单页面布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:background="#45494A"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:text="发起群聊"
android:textColor="#fff"
android:textSize="20sp" />
</LinearLayout>
<View
android:layout_width="match_parent"
android:layout_height="5dp"
android:background="#fff">
</View>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:text="发起群聊"
android:textColor="#fff"
android:textSize="20sp" />
</LinearLayout>
<View
android:layout_width="match_parent"
android:layout_height="5dp"
android:background="#fff"></View>
</LinearLayout>
代码
package com.example.day0928;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.PopupWindow;
public class Main3Activity extends AppCompatActivity {
private Button button1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main3);
button1 = (Button) findViewById(R.id.button1);
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
PopupWindow popupWindow = new PopupWindow(Main3Activity.this);
View inflate = LayoutInflater.from(Main3Activity.this).inflate(R.layout.popup_layout, null);
popupWindow.setContentView(inflate);
popupWindow.setWidth(ViewGroup.LayoutParams.WRAP_CONTENT);
popupWindow.setHeight(ViewGroup.LayoutParams.WRAP_CONTENT);
popupWindow.showAsDropDown(button1,0,0);
popupWindow.setOutsideTouchable(true);
}
});
}
}
示例
微信
package com.example.practice0928;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.ContextMenu;
import android.view.LayoutInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.widget.Button;
import android.widget.ListView;
import android.widget.PopupWindow;
import android.widget.RadioButton;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
private ListView listViewId;
private Button buttonAdd;
private RadioButton radioButtonWechat;
private RadioButton radioButtonPerson;
private RadioButton radioButtonFind;
private RadioButton radioButtonMy;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
supportRequestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_main);
listViewId = (ListView) findViewById(R.id.listView_id);
buttonAdd = (Button) findViewById(R.id.button_add);
radioButtonWechat = (RadioButton) findViewById(R.id.radioButton_wechat);
radioButtonPerson = (RadioButton) findViewById(R.id.radioButton_person);
radioButtonFind = (RadioButton) findViewById(R.id.radioButton_find);
radioButtonMy = (RadioButton) findViewById(R.id.radioButton_my);
buttonAdd.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
PopupWindow popupWindow = new PopupWindow(MainActivity.this);
View inflate = LayoutInflater.from(MainActivity.this).inflate(R.layout.popup_layout, null);
popupWindow.setContentView(inflate);
TextView textView_add_person = inflate.findViewById(R.id.textView_add_person);
textView_add_person.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
TextView textView_remove_person = inflate.findViewById(R.id.textView_remove_person);
textView_add_person.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
popupWindow.setWidth(ViewGroup.LayoutParams.WRAP_CONTENT);
popupWindow.setHeight(ViewGroup.LayoutParams.WRAP_CONTENT);
popupWindow.showAsDropDown(buttonAdd,0,0);
}
});
registerForContextMenu(listViewId);
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
getMenuInflater().inflate(R.menu.menu,menu);
super.onCreateContextMenu(menu, v, menuInfo);
}
@Override
public boolean onContextItemSelected(MenuItem item) {
switch (item.getItemId()){
case R.id.remove:
break;
}
return super.onContextItemSelected(item);
}
}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity"
android:orientation="vertical">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:background="#1C1B20">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:text="微信(3068)"
android:textSize="30sp"
android:textColor="#FFFFFF"/>
<Button
android:id="@+id/button_add"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="+"
android:textSize="50sp"
android:background="@null"
android:textColor="#FFFFFF"
android:layout_alignParentRight="true"
android:layout_alignParentBottom="true"/>
</RelativeLayout>
<ListView
android:id="@+id/listView_id"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="9"
android:entries="@array/monkey"></ListView>
<RadioGroup
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:background="#eee"
android:orientation="horizontal">
<RadioButton
android:id="@+id/radioButton_wechat"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="match_parent"
android:text="微信"
android:drawableTop="@drawable/checked"
android:button="@null"
android:checked="true"
android:gravity="center_horizontal"/>
<RadioButton
android:id="@+id/radioButton_person"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="match_parent"
android:text="通讯录"
android:drawableTop="@drawable/person_checked"
android:button="@null"
android:gravity="center_horizontal"/>
<RadioButton
android:id="@+id/radioButton_find"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="match_parent"
android:text="发现"
android:drawableTop="@drawable/find_checked"
android:button="@null"
android:gravity="center_horizontal"/>
<RadioButton
android:id="@+id/radioButton_my"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="match_parent"
android:text="我"
android:drawableTop="@drawable/checked"
android:button="@null"
android:gravity="center_horizontal"/>
</RadioGroup>
</LinearLayout>
popuowindow
package com.example.practice0928;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.PopupWindow;
public class Practice01 extends AppCompatActivity {
private Button buttonId;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_practice01);
buttonId = (Button) findViewById(R.id.button_id);
buttonId.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
PopupWindow popupWindow = new PopupWindow(Practice01.this);
View inflate = LayoutInflater.from(Practice01.this).inflate(R.layout.popup_layout, null);
popupWindow.setContentView(inflate);
popupWindow.setWidth(200);
popupWindow.setHeight(150);
WindowManager.LayoutParams attributes = getWindow().getAttributes();
attributes.alpha = 0.5f;
getWindow().setAttributes(attributes);
popupWindow.setOnDismissListener(new PopupWindow.OnDismissListener() {
@Override
public void onDismiss() {
WindowManager.LayoutParams attributes = getWindow().getAttributes();
attributes.alpha = 1.0f;
getWindow().setAttributes(attributes);
}
});
popupWindow.setOutsideTouchable(true);
popupWindow.showAsDropDown(buttonId,0,0);
}
});
}
}
QQ
package com.example.practice0928;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.ContextMenu;
import android.view.LayoutInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.PopupWindow;
import android.widget.RadioButton;
import android.widget.TextView;
import android.widget.Toast;
import java.util.ArrayList;
import java.util.List;
public class Practice02 extends AppCompatActivity {
private ArrayAdapter<String> adapter;
private List<String> list = new ArrayList<>();
private TextView buttonSao;
private ListView listViewQq;
private RadioButton radioButtonMessage;
private RadioButton radioButtonPerson;
private RadioButton radioButtonLook;
private RadioButton radioButtonDo;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
supportRequestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_practice02);
buttonSao = (TextView) findViewById(R.id.button_sao);
registerForContextMenu(buttonSao);
for (int i = 0; i < 20; i++) {
list.add("猴子请来的救兵" + i);
}
listViewQq = (ListView) findViewById(R.id.listView_qq);
adapter = new ArrayAdapter<>(Practice02.this,R.layout.support_simple_spinner_dropdown_item,list);
listViewQq.setAdapter(adapter);
listViewQq.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
PopupWindow popupWindow = new PopupWindow(Practice02.this);
View inflate = LayoutInflater.from(Practice02.this).inflate(R.layout.qq_layout, null);
popupWindow.setContentView(inflate);
popupWindow.setWidth(ViewGroup.LayoutParams.WRAP_CONTENT);
popupWindow.setHeight(100);
popupWindow.showAtLocation(listViewQq,20,20,20);
return true;
}
});
radioButtonMessage = (RadioButton) findViewById(R.id.radioButton_message);
radioButtonPerson = (RadioButton) findViewById(R.id.radioButton_person);
radioButtonLook = (RadioButton) findViewById(R.id.radioButton_look);
radioButtonDo = (RadioButton) findViewById(R.id.radioButton_do);
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
getMenuInflater().inflate(R.menu.qqmenu,menu);
super.onCreateContextMenu(menu, v, menuInfo);
}
@Override
public boolean onContextItemSelected(MenuItem item) {
switch (item.getItemId()){
case R.id.add:
Toast.makeText(this, "添加好友", Toast.LENGTH_SHORT).show();
break;
case R.id.sao:
Toast.makeText(this, "扫一扫", Toast.LENGTH_SHORT).show();
break;
}
return super.onContextItemSelected(item);
}
}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".Practice02"
android:orientation="vertical">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:background="#429FFE">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@mipmap/ic_launcher_round"
android:layout_margin="5dp"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:text="消息"
android:textColor="#FFFFFF"
android:textSize="30sp" />
<TextView
android:id="@+id/button_sao"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_alignParentBottom="true"
android:background="#429FFE"
android:text="+"
android:textColor="#FFFFFF"
android:textSize="50sp" />
</RelativeLayout>
<ListView
android:id="@+id/listView_qq"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="9"
android:entries="@array/monkey"></ListView>
<RadioGroup
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:background="#eee"
android:orientation="horizontal">
<RadioButton
android:id="@+id/radioButton_message"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:button="@null"
android:checked="true"
android:drawableTop="@drawable/checked"
android:gravity="center_horizontal"
android:text="消息" />
<RadioButton
android:id="@+id/radioButton_person"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:button="@null"
android:drawableTop="@drawable/person_checked"
android:gravity="center_horizontal"
android:text="联系人" />
<RadioButton
android:id="@+id/radioButton_look"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:button="@null"
android:drawableTop="@drawable/find_checked"
android:gravity="center_horizontal"
android:text="看点" />
<RadioButton
android:id="@+id/radioButton_do"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:button="@null"
android:drawableTop="@drawable/checked"
android:gravity="center_horizontal"
android:text="动态" />
</RadioGroup>
</LinearLayout>