Android自定义Dialog对话框

一些比较好的app都有自己专属样式的对话框,几乎没有用android提供的最原始的对话框。这里有别人博客里介绍的一段话----DialogFragment在android 3.0时被引入。是一种特殊的Fragment,用于在Activity的内容之上展示一个模态的对话框。典型的用于:展示警告框,输入框,确认框等等。在DialogFragment产生之前,我们创建对话框:一般采用AlertDialog和Dialog。注:官方不推荐直接使用Dialog创建对话框。DialogFragment好处与用法:使用DialogFragment来管理对话框,当旋转屏幕和按下后退键时可以更好的管理其声明周期,它和Fragment有着基本一致的声明周期。且DialogFragment也允许开发者把Dialog作为内嵌的组件进行重用,类似Fragment。使用DialogFragment至少需要实现onCreateView或者onCreateDIalog方法。onCreateView即使用定义的xml布局文件展示Dialog。onCreateDialog即利用AlertDialog或者Dialog创建出Dialog。

自定义对话框的步骤就是:

一:自己定义好对话框的布局
下面的布局是自己随便定义的,代码就不贴了,看下布局的样子。

二:利用DialogFragment类生成对话框
即定义一个类继承DialogFragment,并重写onCreateView方法。onCreateDialog方法感觉不如前者灵活,就不介绍了。在onCreateView方法中,设置对话框布局,并用接口回调在activity取得布局的view来进行使用。
`public class MyDialog extends DialogFragment {

private View contentView;/** * Activity需要实现这个接口来接收Dialog的View. */public interface OnGetContentViewListener{    public void onGetView(View view);}@Nullable@Overridepublic View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {    getDialog().requestWindowFeature(Window.FEATURE_NO_TITLE);//set no title    //*****set contentView Layout*****    contentView=inflater.inflate(R.layout.test,null);    //*****set contentView Layout*****    OnGetContentViewListener listener= (OnGetContentViewListener) getActivity();    listener.onGetView(contentView);//send contentView to Activity    return contentView;}

}`

测试:

public class MainActivity extends AppCompatActivity implements MyDialog.OnGetContentViewListener{

@Overrideprotected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.activity_main);}public void cl(View v) {    MyDialog dialog=new MyDialog();    dialog.show(getSupportFragmentManager(),"");}@Overridepublic void onGetView(View view) {    Toast.makeText(MainActivity.this, ((Button)view.findViewById(R.id.ll)).getText(), Toast.LENGTH_SHORT).show();}

}

效果如图:

未完待续

更多相关文章

  1. Android(安卓)Animation学习笔记
  2. [译]提升Android应用性能的小贴士
  3. android编码规范
  4. Android(安卓)Studio上方便使用butterknife注解框架的偷懒插件An
  5. eclipse中开发Android出现问题解决记录和使用技巧
  6. Android(安卓)开发实践 Lambda表达式的使用
  7. 箭头函数的基础使用
  8. NPM 和webpack 的基础使用
  9. Python list sort方法的具体使用

随机推荐

  1. Android(安卓)- Socket 功能在 Service
  2. Android通过ViewPager实现左右滑动切换图
  3. 初学Android,使用Drawable资源之使用Stat
  4. WebView用法与JS交互
  5. android简单的答题游戏
  6. Android自动化编译设置AndroidManifest.x
  7. 【转】Android(安卓)用户事件输入路径(Me
  8. Android手势:单指拖动、双指缩放图片
  9. Android布局属性android:clipToPadding的
  10. [无线] 让Android支持cmwap上网