2012-06-11 16 views

risposta

6

Nella propria attività, è possibile ignorare onTouchEvent e sempre return true; per indicare che si stanno gestendo gli eventi di tocco.

È possibile trovare la documentazione per quella funzione there.

Edit Ecco un modo è possibile disattivare tocco su tutto lo schermo, invece di gestire ogni vista una per una ... Primo modificare il layout corrente come questo:

<FrameLayout 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    > 

    < .... put your current layout here ... /> 

    <TouchBlackHoleView 
     android:id="@+id/black_hole" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" /> 
</FrameLayout> 

e quindi definire la vostra abitudine vista con qualcosa di simile:

public class TouchBlackHoleView extends View { 
    private boolean touch_disabled=true; 
    @Override 
    public boolean onTouchEvent(MotionEvent e) { 
     return touch_disabled; 
    } 
    public disable_touch(boolean b) { 
     touch_disabled=b; 
    } 
} 

Poi, nell'attività, è possibile disattivare il contatto con

(TouchBlackHoleView) black_hole = findViewById(R.id.black_hole); 
black_hole.disable_touch(true); 

e attivare indietro con

black_hole.disable_touch(false); 
+0

'Panorama vista = findViewById (R.id.whole_view); \t view.setOnTouchListener (nuova OnTouchListener() { pubblico onTouch booleana (Visualizza v, evento MotionEvent) {// metodo TODO generato automaticamente stub return true;} }); ' Ho scritto questo inizio della mia animazione, ma non ha funzionato gentilmente dirmi dove sbaglio –

+0

qui whole_view è l'ID del mio layout principale –

+0

Che tipo di vista è vero e che cosa stai cercando di disabilitare? È un pulsante? un ScrollView? ...? – Matthieu

1

risposta a questo problema

for (int i = 1; i < layout.getChildCount(); i++) { TableRow row = (TableRow) layout.getChildAt(i); row.setClickable(false);

selezionate tutte le righe della tabella di layout che aveva tutti i punti di vista e disattivato li

0

Un modo semplice per implementare questo è aggiungere un layout transaperente su di esso (aggiungilo all'altezza e alla larghezza del genitore di riempimento xml).

In avvio di animazione: transaparentlayout.setClickable(true);

Alla fine dell'animazione: transaparentlayout.setClickable(false);

0

Alla fine ho preso come una risposta fondamentale di @Matthieu e farlo funzionare modo. Decido di pubblicare la mia risposta perché mi ci vogliono circa 30 minuti per capire perché ho sbagliato.

XML

<...your path to this view and in the end --> .TouchBlackHoleView 
    android:id="@+id/blackHole" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" /> 

Classe

public class TouchBlackHoleView estende View { touchDisable privato booleano = false;

public TouchBlackHoleView(Context context) { 
    super(context); 
} 

public TouchBlackHoleView(Context context, AttributeSet attrs) { 
    super(context, attrs); 
} 

public TouchBlackHoleView(Context context, AttributeSet attrs, int defStyleAttr) { 
    super(context, attrs, defStyleAttr); 
} 

@Override 
public boolean onTouchEvent(MotionEvent event) { 
    return touchDisable; 
} 

public void disableTouch(boolean value){ 
    touchDisable = value; 
} 
} 

Utilizzando

blackHole = (TouchBlackHoleView) findViewById(R.id.blackHole); 
blackHole.disableTouch(true); 

Godetevi

Problemi correlati