其实PopupWindow的
showAsDropDown(View anchor)方法就是相对于,anchor的左下角显示。但是如果,popupwindow的宽度设置的太大了,尤其是match_parent的了,那给人的感觉是在整个下面显示了。
showAsDropDown(View anchor, int xoff, int yoff)是将popupWindow显示的坐标是,从距离anchor左下角偏移xoff和yoff来显示。
具体例子是:
public class MainActivity extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button mBtn = (Button) findViewById(R.id.btn);
// 引入窗口配置文件
View view = View.inflate(this, R.layout.popview, null);
// 创建PopupWindow对象
final PopupWindow pop = new PopupWindow(view, LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, false);
Button btn = (Button) view.findViewById(R.id.content);
// 需要设置一下此参数,点击外边可消失
pop.setBackgroundDrawable(new BitmapDrawable());
//设置点击窗口外边窗口消失
pop.setOutsideTouchable(true);
// 设置此参数获得焦点,否则无法点击
pop.setFocusable(true);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getApplicationContext(), "fajhfdljahfl", 0).show();
}
});
mBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(pop.isShowing()) {
// 隐藏窗口,如果设置了点击窗口外小时即不需要此方式隐藏
pop.dismiss();
} else {
// 显示窗口
// pop.showAsDropDown(v);
pop.showAsDropDown(v, 100, 100);
}
}
});
}
}
PopupMenu是在3.1以后才开始时有的,所以现阶段使用性并不通用。