sto caricando Web view con Html String, voglio mostrare i pulsanti di navigazione quando l'utente tocca la visualizzazione web, ho provato Con ascoltatore onTouch, tocca evento solleva quando si scorre e tocca ma i vuole cogliere solo tocco/ClickEvent, non scorre evento tocca ..., ho implementato SetOnClickListener sia per WebView e LinearLayout, nessuno di loro non sta lavorando per me Qualsiasi aiuto per quanto riguarda questoAndroid singleTap/OnClick in WebView
risposta
da questa pagina: http://www.codeshogun.com/blog/2009/04/16/how-to-implement-swipe-action-in-android/
Sembra che gli eventi di tocco debbano essere correttamente intrappolati. Check this out:
@Override
public boolean dispatchTouchEvent(MotionEvent e){
super.dispatchTouchEvent(e);
return mGestureDetector.onTouchEvent(e);
}
WebView
non supporta il OnClickListener
. Inoltre consuma gli eventi touch anche se non è successo nulla sulla pagina Web, pertanto le visualizzazioni degli antenati (come il tuo LinearLayout
) non hanno alcuna possibilità di produrre un evento OnClick. È molto sfortunato.
Come soluzione temporanea, ho esteso uno RelativeLayout
e ho inserito il mio WebView
all'interno di esso. Nel numero RelativeLayout
ho sovrascritto onInterceptTouchEvent
e stavo cercando gli eventi tocco. Se viene rilevato un tocco, viene richiamato lo RelativeLayout
OnClickListener
con performClick()
.
public class TapAwareRelativeLayout extends RelativeLayout {
private final float MOVE_THRESHOLD_DP = 20 * getResources().getDisplayMetrics().density;
private boolean mMoveOccured;
private float mDownPosX;
private float mDownPosY;
public TapAwareRelativeLayout(Context context) {
super(context);
}
public TapAwareRelativeLayout(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
final int action = ev.getAction();
switch (action) {
case MotionEvent.ACTION_DOWN:
mMoveOccured = false;
mDownPosX = ev.getX();
mDownPosY = ev.getY();
break;
case MotionEvent.ACTION_UP:
if (!mMoveOccured) {
// TAP occured
performClick();
}
break;
case MotionEvent.ACTION_MOVE:
if (Math.abs(ev.getX() - mDownPosX) > MOVE_THRESHOLD_DP || Math.abs(ev.getY() - mDownPosY) > MOVE_THRESHOLD_DP) {
mMoveOccured = true;
}
break;
}
return super.onInterceptTouchEvent(ev);
}
}
Ho modificato la risposta di Zsolt Safrany e ho messo il suo contenuto onInterceptTouchEvent
s' nel metodo di visualizzazione web onTouch
e ha funzionato.
webview.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
Log.v(TAG,"Got a touch event in the web view!");
final int action = ev.getAction();
switch (action) {
case MotionEvent.ACTION_DOWN:
mMoveOccured = false;
mDownPosX = ev.getX();
mDownPosY = ev.getY();
break;
case MotionEvent.ACTION_UP:
if (!mMoveOccured) {
//click operation is here
}
break;
case MotionEvent.ACTION_MOVE:
if (Math.abs(ev.getX() - mDownPosX) > MOVE_THRESHOLD_DP || Math.abs(ev.getY() - mDownPosY) > MOVE_THRESHOLD_DP) {
mMoveOccured = true;
}
break;
}
return false;
} });
Questa soluzione contiene errori (event ed ev.getX()) e funziona come prima soluzione, cioè non funziona. – CoolMind
Ha lavorato codice ::
final Boolean[] mMoveOccured = new Boolean[1];
final float[] mDownPosX = new float[1];
final float[] mDownPosY = new float[1];
final float MOVE_THRESHOLD_DP = 20 * getResources().getDisplayMetrics().density;
userPic.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
final int action = event.getAction();
switch (action) {
case MotionEvent.ACTION_DOWN:
mMoveOccured[0] = false;
mDownPosX[0] = event.getX();
mDownPosY[0] = event.getY();
break;
case MotionEvent.ACTION_UP:
if (!mMoveOccured[0]) {
Toast.makeText(v.getContext(), "Webview pressed", Toast.LENGTH_SHORT).show();
}
break;
case MotionEvent.ACTION_MOVE:
if (Math.abs(event.getX() - mDownPosX[0]) > MOVE_THRESHOLD_DP || Math.abs(event.getY() - mDownPosY[0]) > MOVE_THRESHOLD_DP) {
mMoveOccured[0] = true;
}
break;
}
return false;
}
});
- 1. Pizzico Zoom in webview [Android]
- 2. Html Audio in Android Webview
- 3. programmatica click in Android WebView
- 4. webview android stay in app
- 5. Android WebView smooth scroll
- 6. Android WebView Javascript getSelection
- 7. WebView Android saveState
- 8. Android WebView removeCookie
- 9. Prestazioni WebView Android
- 10. Handle Android WebView onReceivedClientCertRequest
- 11. Android Webview Redirect loop
- 12. Colore sfondo Android WebView
- 13. Android. WebView e loadData
- 14. Android WebView Javascript abilitato
- 15. Risposta POST HTTP in WebView in Android
- 16. Apri URL in webView in Android
- 17. attivare lo zoom/disabilitare in Android WebView
- 18. @Android display/res/visualizzabile in WebView
- 19. Selezione del testo Android in Webview
- 20. JavaScript non funziona in Android WebView
- 21. Android: Visualizzare le immagini in Webview
- 22. webview con schermo intero in Android
- 23. WebView non scorrerà in Android 2.x
- 24. dimensione del carattere WebView Android in pixel
- 25. WebView loadDataWithBaseUrl - problema strano in Android 4.0.3
- 26. Annulla loading in WebView su Android
- 27. Come modificare FontSize in una WebView Android?
- 28. Leggi eventi della tastiera in Android WebView
- 29. Twitter Bootstrap non funziona in Android WebView
- 30. Modifica dinamica dell'elemento HTML in webView Android
Hey @Saffer può u si prega di fornire alcuni dettagli potrebbero come usare questo. grazie .. – sandy
@ Zsolt - Non ho avuto la possibilità di inserire webView in RelativeLayout, potresti fornire maggiori informazioni su questo? – Braj
Si inserisce la visualizzazione Web in RelativeLayout nel file di layout xml. La dimensione u specificata per la WebView prima è ora la specifica della dimensione di RelativeLayout e si fa in modo che WebView corrisponda esattamente alla dimensione del suo genitore (RelativeLayout). Ciò li renderà della stessa dimensione mentre RelativeLayout esegue il wrapping di WebView. –