Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> android自定義Dialog

android自定義Dialog

編輯:關於Android編程

我們在部分機型上使用Toast的時候會出現Toast不顯示的問題

其中一種解決辦法就是使用自定義的Dialog代替

在使用Dialog在的時候,其中有一些讓很多人頭疼的問題

1.dialog顯示的位置如何控制

2.dialog顯示的時間如何控制

3.dialog顯示的時候Activity的背景會變暗,如何設置dialog顯示的時候Activity的背景不變暗

根節點設置寬高推薦使用Match_parent,

第一步:

定義一個dialog的布局mydialog.xml

 




    

第二步

自定義dialog的顯示樣式res/values/styles.xml

 



第三步在activity中使用就行了
public void showMyDialog(Context context,String msg){
		//第一種創建方法
		AlertDialog.Builder builder= new AlertDialog.Builder(context,R.style.mydialogstyle);//創建buider 
		AlertDialog dialog = builder.create();
		//第二種創建方法
		//Dialog dialog = new Dialog(context, R.style.mydialogstyle); 
		dialog.show();//這一句話一定要緊跟著new創建 之後不然會報錯
		//下面對dialog的所有配置代碼一定要放在dialog.show();之後,不然會報錯(我的手機是這樣的,不知道你們的是不是)
		Window dialogWindow = dialog.getWindow();
		dialogWindow.setContentView(R.layout.mydialog);
		TextView tv_title = (TextView) dialogWindow.findViewById(R.id.myDialogTv);
		tv_title.setText("msg");
		WindowManager.LayoutParams lp = dialogWindow.getAttributes();
		lp.alpha = 1.0f;//設置Dialog的透明度
		lp.x = 0;
		lp.y= dip2px(context, 180);//把dp轉換為sp,這裡的lp.x/lp.y 是相對於原位置的偏移量
		dialogWindow.setAttributes(lp);

	}
	public static int dip2px(Context context, float dpValue) { //把dp轉換為px
		final float scale = context.getResources().getDisplayMetrics().density; 
		return (int) (dpValue * scale + 0.5f);
	}
  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved