2015-01-03 20 views

risposta

7

seguente codice aggiungere sovrapposizione in cima a tutto:

View v1 = new View(this);  
WindowManager.LayoutParams params = new WindowManager.LayoutParams(
1000, 
50, 
WindowManager.LayoutParams.TYPE_SYSTEM_ALERT, 
WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | 
WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN, 
PixelFormat.OPAQUE); 

params.gravity = Gravity.BOTTOM; 
WindowManager wm = (WindowManager) this.getSystemService(Context.WINDOW_SERVICE); 
wm.addView(v1, params); 

per bloccare l'evento di tocco o si deve cambiare la bandiera o sotto il codice funzionerà:

protected boolean onTouchEvent (MotionEvent me) { 
    return true; 
} 

Per v1 fareste un'importazione:

import android.view.View.OnTouchListener; 

quindi impostare le onTouchListener:

v1.setOnTouchListener(new OnTouchListener() { 
    @Override 
    public boolean onTouch(View v, MotionEvent event) { 
     return true; 
    } 
}) 
+0

Come ho fatto a non ricordare il tocco ascoltatore? +1 – jvrodrigues

12

se sovrapposizione non viene ottiene i eventi touch poi gli eventi sono passati alla visualizzazione di base, in modo da bloccare evento di tocco in vista di sotto di essa, rendere il vostro overlay tangibile android:clickable="true"

+0

che è grande, lavora per me, grazie – li2

+0

Nizza trucco, ha funzionato per me, grazie –

1

mettere il pulsante sul set layer.then overlay quel pulsante Android: background = "@ null" è bloccare evento di tocco di vista al di sotto it..hope risolve il problema

7

Il codice riportato di seguito ha funzionato per me. Ho aggiunto android:clickable="true" per bloccare gli eventi di tocco ad altre visualizzazioni sottostanti.

Questo è un esempio con ProgressBar all'interno dell'overlay. Se non vuoi il ProgressBar, puoi usare FrameLayout senza di esso.

<FrameLayout 
      xmlns:android="http://schemas.android.com/apk/res/android" 
      android:id="@+id/progress_overlay" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:alpha="0.4" 
      android:animateLayoutChanges="true" 
      android:background="@android:color/black" 
      android:visibility="gone" 
      android:clickable="true"> 

      <ProgressBar 
       style="?android:attr/progressBarStyleLarge" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_gravity="center" 
       android:indeterminate="true"/> 

</FrameLayout>