2014-02-10 14 views
5

Ich mache einen Wecker. Ich möchte eine Aktivität machen, die auf dem Layout-Teil leer ist (außer ein Foto auf dem Hintergrund) Ich möchte tun, dass, wenn ich irgendwo auf dem Bildschirm berühre, die Musik stoppt.onClickListener für den WHOLE-Bildschirm

Ich dachte über das img als Imageview machen ... aber es dosent strach auf dem Bildschirm, wenn ich es tun (auch wenn die Parameter auf dem ganzen Bildschirm) sind

Hilfe?

+1

Wenn Sie wollen, wenn berühren Sie das Layout, klicken Sie auf Hörer auf das Layout selbst –

+0

sollten Sie es als Antwort setzen! Danke :) –

+0

Können Sie relevante Code, Ihre Layout-XML und Activity-Klasse? – Peshal

Antwort

6

in Ihrem Layout, dass überprüfen:

android:clickable="true" 
android:focusable="true" 
android:focusableInTouchMode="true" 

dann versuchen onTouchListener

dann zu verwenden versuchen:

yourActivityLayout.setOnTouchListener(new View.OnTouchListener() { 
     @Override 
     public boolean onTouch(View arg0, MotionEvent arg1) { 
      // action to do 
      return true;//always return true to consume event 
     } 
    }); 
0

Lassen Sie Ihre Aktivität oder Ihr Fragment OnClickListener implementieren und weisen Sie sie dann als Klick-Listener jeder Ansicht und jedem Layout zu.

in der ersten Zeile der Funktion nur eine gewisse Logik laufen,

@override 
public void onClick(view v) 
{ 
    if(isMusicPlaying) 
     stopMusic(); 

    // here run the rest of your logic 
    if (v == someButton){} 

} 
0

auf diese Weise kommen Sie mit Whole Aktivität Berührungsereignis setzen

public class MainActivity extends Activity { 

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

    } 

    @Override 
    public boolean onTouchEvent(MotionEvent event) { 

     if (event.getAction() == MotionEvent.ACTION_UP) { 

      // do your work here 
      return true; 
     } else { 
      return false; 
     } 
    } 

} 
0

Sie mit Window spielen können und Ihr Layout über alles andere überlagern (kann auch Overlay Statusleiste und andere System UI)

Windowmanager-Instanz hat addVieW() Methode. Mit richtigen Layout params es Ergebnis

0

die Sie interessieren, Fahren Sie mit oberster Mutter als Argument für diese Methode

Eg beschrieben erzeugt: stopMusicOnTouch (yourParentView);

public void stopMusicOnTouch(View view) { 

    //Set up touch listener for non-text box views to hide keyboard. 
    if(!(view instanceof ImageView)) { 

     view.setOnTouchListener(new OnTouchListener() { 

      public boolean onTouch(View v, MotionEvent event) { 
       // Stop music here 
       return false; 
      } 

     }); 
    } 

    //If a layout container, iterate over children and seed recursion. 
    if (view instanceof ViewGroup) { 

     for (int i = 0; i < ((ViewGroup) view).getChildCount(); i++) { 

      View innerView = ((ViewGroup) view).getChildAt(i); 

      stopMusicOnTouch(innerView); 
     } 
    } 
} 
+0

implementieren Sie können dies auch in clicklistener ändern –

1

Wenn Sie wollen, wenn berühren das Layout, setzen Zuhörer auf die es das Layout klicken Selbst

0

Am Ende habe ich eine Taste für den gesamten Bildschirm und tat es transperent (aber sichtbar)

es funktionierte perfekt, und ich schlage es anderen vor!