利用Android PopupWindow 實現自定義彈出層

fmms 14年前發布 | 79K 次閱讀 Android Android開發 移動開發

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 。。。 } }); }</pre>

PopupWindow的布局可以自定義 xml    。  彈出的PopupWindow 是在Activity上層的。
所以即使彈出了PopupWindow,下層的Activity沒有被遮蓋的部分依然   有之前的所有 監聽。 例如我上圖中,的觸摸滑動事件。  按鈕事件 都依然存在。

為了能夠像 AlertDialog那樣,彈出后。下面的視圖,顯示為暗色,不能做任何操作。
設置 PopupWindow 布局為布滿整個屏幕,   中間是并列的 5個按鈕。 外圍暗黑色的,其實是一個  半透明的背景。
將PopupWindow設置為整個屏幕大小, 外圍半透明。效果與AlertDialog相當。

按這種思路 ,可以實現自己定義的按鈕。 AlertDialog。  樣式更靈活,修改起來也方便。

 本文由用戶 fmms 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!