Dialog自定義位置顯示

今天要作點擊一個按鈕,點擊彈出下拉對話框,這個對話框樣子就跟html的dropdown list同樣,蓋在原佈局上面。原本是想用menu作,可是因爲這個按鈕只是整個界面中很小的一個,不固定,用menu還要從新搞整個大布局,自定義menu佈局還要先研究,太麻煩,最後仍是決定用dialog。html

第一個遇到問題的是dialog的顯示位置問題。這裏是個人部分解決代碼:java

在調用dialog的地方:android

Button button=(Button)layout.findViewById(R.id.bt_dropdown_selector);
		button.setOnClickListener(new View.OnClickListener() {
			@Override
			public void onClick(View v) {
				Window dialogWindow = dropdownListDialog.getWindow();
				dialogWindow.getDecorView().setPadding(0, 0, 0, 0);
				WindowManager.LayoutParams lp = dialogWindow.getAttributes();
				int[] position=new int[2];
				v.getLocationOnScreen(position);
				lp.x = position[0]; // 新位置X座標
				lp.y =  position[1]; // 新位置Y座標
				lp.gravity= Gravity.LEFT|Gravity.TOP;
				dialogWindow.setAttributes(lp);
				dropdownListDialog.onWindowAttributesChanged(lp);
				dropdownListDialog.setCanceledOnTouchOutside(true);
				dropdownListDialog.show();
			}
		});

這裏的座標只是先跟按鈕的左下角對齊了,也沒有居中,也沒有判斷dialog有沒有超過屏幕,等後面繼續完善吧。ide

style.xml裏是這樣的,項目是支持android4.0以上,還用了supportv4,因此是有這個parent theme的。佈局

<!-- 下拉選擇對話框樣式 -->
    <style name="DropdownDialogTheme" parent="@android:style/Theme.Holo.DialogWhenLarge">
        <item name="android:windowNoTitle">true</item>
        <item name="android:windowFrame">@null</item>
        <item name="android:windowIsFloating">true</item>
        <item name="android:background">@android:color/white</item>
        <item name="android:windowBackground">@android:color/transparent</item>
        <item name="android:backgroundDimEnabled">false</item>
    </style>
相關文章
相關標籤/搜索