Tworzę działanie, które wygląda jak okno dialogowe.Zapobieganie interakcji "okna dialogowego" z aktywnością w tle po kliknięciu poza granicami
Oto styl:
<style name="TablesDialogActivity" parent="@android:style/Theme.Holo.Dialog">
<item name="android:windowBackground">@drawable/frame_background_left</item>
</style>
Oto aktywność onCreate():
protected void onCreate(Bundle savedInstanceState) {
getWindow().setFlags(LayoutParams.FLAG_NOT_TOUCH_MODAL, LayoutParams.FLAG_NOT_TOUCH_MODAL);
getWindow().setFlags(LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH, LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH);
super.onCreate(savedInstanceState);
}
A także wewnątrz kolektora dotykowym aktywny:
@Override
public boolean onTouchEvent(MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_OUTSIDE) {
finish();
return true;
}
return false;
}
To prawie wszystko działa, aktywność kończy się na dotykowych oknach dialogowych, ale także współdziała z przyciskami na tle aktywności, która jest zła. Dokumentacja na temat onTouchEvent
mówi, że powinieneś zwrócić wartość true, jeśli spożyłeś zdarzenie dotykowe. Zwrócę prawdę, ale tak się nie wydaje.
http://stackoverflow.com/questions/4650246/how-to-cancel-an-dialog-themed-like-activity-when-touched-outside-the-window/5831214#5831214 to dobra odpowiedź) –
czy spojrzałeś na mój kod? Gdybyś to zrobił, wiedziałbyś, że to stąd. –
Możesz znaleźć moje rozwiązanie tego problemu tutaj: http://stackoverflow.com/questions/16701915/can-we-interact-with-background-activity-when-displaying-a-dialog-over-it-in-and – user2288580