Android系统的AlertDailog ,Menu。。。之类控件,我不确定能否自定义样式。 就是在应用中自定义一套主题。
因为系统Menu菜单极其单一。样式丑陋,而且字体,字号都无法修改。想到用PopupWindow来实现。PopupWindow 其实是一个Activity 但是消耗的系统资源没有 Activity那么大。 是一个小型的UI线程 (可以这么理解吧)。
主体代码
//长按弹出菜单
public void showTopWindow(){
if (mPopupWindow==null);{
inintTopWindow();
}
mPopupWindow.showAtLocation(findViewById(R.id.full_main), Gravity.CENTER|Gravity.CENTER, 0, 0);
}
// 长按弹出层
public void inintTopWindow(){
LayoutInflater mLayoutInflater = (LayoutInflater) (FullScreenLineActivity.this).getSystemService(LAYOUT_INFLATER_SERVICE);
View topWindow=mLayoutInflater.inflate(R.layout.k_line_top_window_layout, null);
mPopupWindow=new PopupWindow(topWindow,LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT);
mPopupWindow.setOutsideTouchable(false);
topWindow.findViewById(R.id.f10info).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
。。。
}
});
}
PopupWindow的布局可以自定义 xml。弹出的PopupWindow 是在Activity上层的。
所以即使弹出了PopupWindow,下层的Activity没有被遮盖的部分依然有之前的所有 监听。 例如我上图中,的触摸滑动事件。按钮事件 都依然存在。
为了能够像 AlertDialog那样,弹出后。下面的视图,显示为暗色,不能做任何操作。
设置 PopupWindow 布局为布满整个屏幕,中间是并列的 5个按钮。 外围暗黑色的,其实是一个半透明的背景。
将PopupWindow设置为整个屏幕大小, 外围半透明。效果与AlertDialog相当。
按这种思路 ,可以实现自己定义的按钮。 AlertDialog。样式更灵活,修改起来也方便。