簡介
PopupWindow,顧名思義彈窗.PopupWindow是與AlertDialog在形式上類似的彈窗功能,都是為了在activity最上層顯示一個彈窗.但是區別是PopupWindow可以自定義出現的位置,並且可以添加入自己需要的View或者導入自己寫好的xml佈局
應用場景
在很多場景下都可以見到它。例如ActionBar/Toolbar的選項彈窗,一組選項的容器,或者列表等集合的窗口等等。
簡單的Demo
為了瞭解基本的流程,我們來一個最簡單demo演示一下.
創建流程:
- 用LayoutInflater獲得xml佈局View .或者直接在代碼上new一個View
- 實例化一個PopupWindow,將View在實例化作為參數傳入
- 配置PopupWindow參數
從項目中粘貼出來的代碼:
<code>private void initView() {
mPopupWindow = buildPopWindow();
mTvChoice = ((TextView) findViewById(R.id.tv_choice));
}
private PopupWindow buildPopWindow() {
View view = ResourcesUtils.findViewById(this, R.layout.pop_setting1); //加載佈局
final PopupWindow popupWindow = new PopupWindow(view, LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT); //參數為1.View 2.寬度 3.高度
popupWindow.setBackgroundDrawable(new BitmapDrawable());
popupWindow.setFocusable(true);
popupWindow.setOutsideTouchable(true);//點擊其他區域關閉popupWindow
view.findViewById(R.id.tv_environment_kaifa).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mEtAddressVideo.setText("mvideo.test.cebbank.com");
mEtPortVideo.setText("3000");
mEtPortText.setText("9003");
mEtAddressFile.setText("https://111.205.51.132:9000");
mTvChoice.setText("自定義環境");
environmentType = 1;
IMCoreInit.IP_TYPE=1;
popupWindow.dismiss();
}
});
return popupWindow;
}/<code>

閱讀更多 快樂肥宅劇場 的文章