Android自定义Dialog对话框

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。

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

一:自己定义好对话框的布局
下面的布局是自己随便定义的,代码就不贴了,看下布局的样子。Android自定义Dialog对话框_第1张图片

二:利用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
@Override
public 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{

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
}

public void cl(View v) {
    MyDialog dialog=new MyDialog();
    dialog.show(getSupportFragmentManager(),"");
}


@Override
public void onGetView(View view) {
    Toast.makeText(MainActivity.this, ((Button)view.findViewById(R.id.ll)).getText(), Toast.LENGTH_SHORT).show();
}

}

效果如图:
Android自定义Dialog对话框_第2张图片

未完待续

你可能感兴趣的:(android,滴水石穿)