private void initView() {
tv_my=findViewById(R.id.tv_my);
tv_my.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//新建一个GridView
GridView gridView =new GridView(MainActivity.this);
gridView.setColumnWidth(zitiWidth);//设置宽
gridView.setNumColumns(1);//列数
gridView.setGravity(Gravity.CENTER);//居中
int eightMeasureSpec = View.MeasureSpec.makeMeasureSpec(100, View.MeasureSpec.AT_MOST);
gridView.setMinimumHeight(eightMeasureSpec);
// gridView.setMinimumHeight();
ArrayList> imagelist =new ArrayList>();
for (int i =0; i
HashMap map =new HashMap();
map.put("text", iconName[i]);
imagelist.add(map);
}
SimpleAdapter simpleAdapter =new SimpleAdapter(MainActivity.this, imagelist,
R.layout.my_items, new String[]{"text"}, new int[]{R.id.tv_item});
//设置背景
Resources resources = getBaseContext().getResources();
Drawable HippoDrawable = resources.getDrawable(R.color.colorAccent);
gridView.setBackground(HippoDrawable);
gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView adapterView, View view, int i, long l) {
Toast.makeText(MainActivity.this, "点击的是" + i, Toast.LENGTH_SHORT).show();
}
});
gridView.setAdapter(simpleAdapter);
popupWindow =new PopupWindow(gridView, zitiWidth, ViewGroup.LayoutParams.WRAP_CONTENT, true);
popupWindow.setContentView(gridView);
popupWindow.setBackgroundDrawable(new BitmapDrawable());
// 设置PopupWindow是否能响应外部点击事件
popupWindow.setFocusable(true);
popupWindow.setOutsideTouchable(false);
popupWindow.showAsDropDown(tv_my);//设置popupWindow显示,并且告诉它显示在那个View下面
}
});
// PopupWindow mPopupWindow = new PopupWindow(my_gridview, LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
// // 需要设置一下此参数,点击外边可消失
// mPopupWindow.setBackgroundDrawable(new BitmapDrawable());
// // 设置点击窗口外边窗口消失 这两步用于点击手机的返回键的时候,不是直接关闭activity,而是关闭pop框
// mPopupWindow.setOutsideTouchable(true);
//
// // 设置此参数获得焦点,否则无法点击,即:事件拦截消费
// mPopupWindow.setFocusable(true);
}
public void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
if (tv_my.getWidth() !=0) {
zitiWidth =tv_my.getWidth();
}
}
网友评论