Dialog 와 관련해서 공식적인 권장사항은 라이프사이클에 좀 더 대응하기 쉽게 하시려면 DialogFragment를 사용하세요.
https://developer.android.com/reference/android/app/DialogFragment
하지만 Dialog도 여전히 사용할 수 있습니다. 그리고 님처럼 커스텀 레이아웃을 사용하고 싶다면 시스템에서 제공하는 레이아웃대신에 님이 지정한 레이아웃을 사용하시면 됩니다. 해당 메소드는
public void setContentView (int layoutResID)
dlg.setContentView(R.layout.my_dialog_layout)
layout 을 하나 만드신 다음에 builder에서 setContentView를 호출하세요. 이 경우에는 물론 버튼 클릭리스너 처리는 님이 직접해 주셔 합니다. Dialog에도 findViewById가 존재합니다.
public T findViewById (int id)
이미지를 다이얼로그에 동적으로 전달하고 싶다면, Dialog를 상속하셔서 님이 정의하는 클래스를 만드신 다음 이미지를 지정하는 메소드를 하나 추가하시면 되겠죠. 아니면
public void setContentView (View view)
이미지가 담긴 Layout을 inflate해 준 다음 이걸 setContentView에 설정해도 되겠네요. 이러면 AlertDialogBuilder를 그대로 사용하실 수 있겠네요.
도움이 되시길.