W tym celu, flagę Window
który pozwala na zewnątrz dotyk powinien być włączony, a na dobry wygląd flaga przyciemnienia tła powinna zostać wyczyszczona.
Ponieważ musi to być zrobione po utworzeniu okna dialogowego, zaimplementowałem je za pomocą Handler
.
@Override
public void onViewCreated(final View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
// This is done in a post() since the dialog must be drawn before locating.
getView().post(new Runnable() {
@Override
public void run() {
Window dialogWindow = getDialog().getWindow();
// Make the dialog possible to be outside touch
dialogWindow.setFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL,
WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL);
dialogWindow.clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
getView().invalidate();
}
});
}
W tym momencie możliwy jest kontakt zewnętrzny.
W przypadku chcemy, aby to ładniejszy i bez ramy, następujący kod można dodać:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Hide title of the dialog
setStyle(STYLE_NO_FRAME, 0);
}
Ja już pracuje z STYLE_NO_FRAME i jest jedynym, który dla mnie OK (od UI). – Yaniv
@ yaniv to pora na pokazanie kodu :) – Warpzit