2013-02-08 5 views
0

스크롤 목록 소유자와 Listner가있는 사용자 정의 webview를 만들었습니다. HTML 코드를로드하고 있는데, 이는 img 태그를 생성하는 자바 스크립트를 사용했으며, 루프의 경우 을 사용합니다.<img> 태그의 위치를 ​​얻는 방법 webview의 ontouchListner에있는

String htnlString = "<!DOCTYPE html><html><body style = \"text-align:center\"><script type=\"text/javascript\">for(a=1;a<=10;a++)document.write('<img style=\"border-style:dotted;border-width:10px;border-color:black;\"src=\"http://shiaislamicbooks.com/books_snaps/EN183/'+a+'.jpg\" alt=\"Page Not Found\"/>');</script></body></html>"; 

wv.loadDataWithBaseURL(null, htnlString, "text/html", "UTF-8", null); 

은 지금은 웹보기의 img 태그 onTouchListner의 위치를 ​​싶어. <img> 태그의 위치를 ​​반환하는 메서드가 webview에 있습니까?

전체 코드를 사전에

import android.content.Context; 
    import android.util.AttributeSet; 
    import android.util.Log; 
    import android.view.MotionEvent; 
    import android.webkit.WebView; 

    public class scorllableWebview extends WebView { 
    private OnScrollChangedCallback mOnScrollChangedCallback; 

public scorllableWebview(final Context context) { 
    super(context); 
} 

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

public scorllableWebview(final Context context, final AttributeSet attrs, 
     final int defStyle) { 
    super(context, attrs, defStyle); 
} 

@Override 
protected void onScrollChanged(final int l, final int t, final int oldl, 
     final int oldt) { 
    super.onScrollChanged(l, t, oldl, oldt); 
    if (mOnScrollChangedCallback != null) 
     mOnScrollChangedCallback.onScroll(l, t); 
} 

public OnScrollChangedCallback getOnScrollChangedCallback() { 
    return mOnScrollChangedCallback; 
} 

public void setOnScrollChangedCallback(
     final OnScrollChangedCallback onScrollChangedCallback) { 
    mOnScrollChangedCallback = onScrollChangedCallback; 
} 

/** 
* Impliment in the activity/fragment/view that you want to listen to the 
* webview 
*/ 
public static interface OnScrollChangedCallback { 
    public void onScroll(int l, int t); 
} 

@Override 
public boolean onTouchEvent(MotionEvent event) { 
    Log.d("onTouchEvent", event.getAction() + ""); 

    // I want to get the position of <img> tag here. 
    // what is the method which return the <img> tag position 

    return super.onTouchEvent(event); 
} 
} 

감사합니다.

답변

0

이것은 터치 좌표를 가져 오는 것이 무엇을 의미하는지에 따라 다릅니다. 가 좌표와는 websiew의 내용에 정상적으로 처리 될 수 있도록, false를 돌려 저장,

  • 웹보기의 onTouchListener에 대한 : 당신이 안드로이드 좌표를 의미하는 경우

    , 여기에 가능한 솔루션입니다.

  • webview에서 img 태그를 터치하는 자바 스크립트에서 addJavascriptInterface (more info here) 메서드를 사용하여 android의 함수를 호출하여 img 태그가 수정되었음을 알립니다.

  • 이 함수에서는 이전에 저장 한 좌표를 사용할 수 있습니다.

당신이 html 좌표를 의미하는 경우에 대비하여 첫 번째 단계를 건너 뛰고 간단히 android framework에 전달할 수 있습니다.

+0

감사합니다. 하지만 샘플 코드 plz을 보내 주시겠습니까 –

+0

나는 이미 링크를 넣었습니다. 이후 나는 자바 스크립트 전문가가 아니에요, 내가 실수를 할 수도 있습니다. 게다가 좌표의 정의가 무엇 인지도 적지 않았습니다. 화면과 비교하거나, 웹뷰에서 가져온 것입니까? –