2016-10-04 2 views
0

ダイアログフラグメントの外でユーザーがタッチしたときにいくつかのタスクを実行したい。これどうやってするの?私custmomダイアログフラグメントでダイアログの断片の外でユーザーがタッチするときを検出する方法は?

  • がクローズからダイアログを防ぐために、コードの一部があります時に外部のタッチ:。

    getDialog()setCanceledOnTouchOutside(偽);

+0

@PierGiorgioMisley:私は、ユーザーがダイアログボックスの外をタッチするだけでなく、外すときにカスタム操作を処理するメカニズムを持っていたいと思います。 –

答えて

1
public class MyActivity extends Activity { 

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    // Make us non-modal, so that others can receive touch events. 
    getWindow().setFlags(LayoutParams.FLAG_NOT_TOUCH_MODAL, LayoutParams.FLAG_NOT_TOUCH_MODAL); 

    // ...but notify us that it happened. 
    getWindow().setFlags(LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH, LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH); 

    // Note that flag changes must happen *before* the content view is set. 
    setContentView(R.layout.my_dialog_view); 
    } 

    @Override 
    public boolean onTouchEvent(MotionEvent event) { 
    // If we've received a touch notification that the user has touched 
    // outside the app, finish the activity. 
    if (MotionEvent.ACTION_OUTSIDE == event.getAction()) { 
     //outside touch event 
     return true; 
    } 

    // Delegate everything else to Activity. 
    return super.onTouchEvent(event); 
    } 
} 

参考:Look at the second answer here.

P.S.質問では、彼はアクティビティダイアログテーマを持っていると言いました。

関連する問題