android自定义Dialog

来源:互联网 发布:淘宝发帖怎么删除 编辑:程序博客网 时间:2024/06/11 21:50

我们在部分机型上使用Toast的时候会出现Toast不显示的问题

其中一种解决办法就是使用自定义的Dialog代替

在使用Dialog在的时候,其中有一些让很多人头疼的问题

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

2.dialog显示的时间如何控制

3.dialog显示的时候Activity的背景会变暗,如何设置dialog显示的时候Activity的背景不变暗

注意:自定义dialog的布局位置设置和popuwindow的类似http://blog.csdn.net/wei_chong_chong/article/details/51057559

根节点设置宽高推荐使用Match_parent,

第一步:

定义一个dialog的布局mydialog.xml

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="wrap_content"    android:background="@null"    android:gravity="center"    android:orientation="vertical" >    <TextView        android:id="@+id/myDialogTv"        android:layout_width="120dp"        android:layout_height="30dp"        android:layout_gravity="center"        android:background="@android:color/holo_blue_light"        android:gravity="center"        android:textColor="@android:color/black"        android:text="dialog!"        android:textSize="13sp" /></LinearLayout>
第二步

自定义dialog的显示样式res/values/styles.xml

 <style name="mydialogstyle" parent="@android:style/Theme.Dialog">        <item name="android:backgroundDimEnabled">false</item><!--activity不变暗-->        <item name="android:windowNoTitle">true</item>         <item name="android:windowIsFloating">true</item><!--是否浮现在activity之上-->          <item name="android:windowFrame">@null</item><!--边框-->        <item name="android:windowIsTranslucent">false</item><!--半透明-->        <item name="android:windowBackground">@android:color/transparent</item><!--dialog显示时 Activity的背景颜色 -->    </style>


第三步在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转换为pxfinal float scale = context.getResources().getDisplayMetrics().density; return (int) (dpValue * scale + 0.5f);}




参考:http://blog.csdn.net/alrdy/article/details/8099438#

           http://www.cnblogs.com/angeldevil/archive/2012/03/31/2426242.html

0 0