WebView.getScale() bị phản đối (nhưng vẫn có thể sử dụng)Làm thế nào có được quy mô webview trong Android 4
Cách khuyến khích để có được quy mô cho webview là sử dụng WebViewClient.onScaleChanged() http://developer.android.com/reference/android/webkit/WebViewClient.html#onScaleChanged(android.webkit.WebView, float, float)
tôi đã thêm tương ứng xử lý trong webview tùy chỉnh của tôi:
public class CustomWebView extends WebView {
public CustomWebView(Context context) {
super(context);
setWebViewClient(new WebViewClient() {
@Override
public void onScaleChanged(WebView view, float oldScale, float newScale) {
super.onScaleChanged(view, oldScale, newScale);
currentScale = newScale
}
});
}
Và bây giờ vấn đề: phương pháp không gọi (ít nhất là trên mối quan hệ của tôi 7) nếu tôi phóng to/thu nhỏ bằng nhúm, vì vậy nó hoạt động tốt chỉ khi tôi sử dụng điều khiển thu phóng nhưng tấn.
Bạn có tìm thấy câu trả lời ngay bây giờ không? Tôi có cùng một vấn đề. –
Đã không tìm cách để bắt quy mô thay đổi ngay cả, nhưng mục tiêu của tôi là theo dõi quy mô hiện tại, vì vậy tôi đã buộc phải sử dụng WebView.getScale() thay vì tiếp cận quy mô người nghe. Nếu bạn cần theo dõi sự kiện thay đổi tỷ lệ trên webview, hãy thử đặt trình dò cử chỉ tùy chỉnh thành chế độ xem web và chỉ cần theo dõi sự kiện pinch. Đừng chắc chắn nó sẽ hoạt động, chỉ cần ý tưởng. – abovesun
Tôi chưa có giải pháp (và tôi không nghĩ rằng có một giải pháp trực tiếp nào sau đây), nhưng tôi đã phát hiện ra lý do: cuộc gọi lại 'ScaleDetectorListener.onScaleEnd' trong' WebView' (và sau đó là 'ZoomManager 'helper class) kết quả trong' setNewZoomScale' (cho phiên bản 'WebKit') hoặc' setZoomScale' (cho phiên bản 'ZoomManager') được gọi với thang đo' mActualScale', và những phương thức đó sẽ chỉ kích hoạt 'onScaleChanged' khi cung cấp scale không bằng 'mActualScale' (có một yêu cầu'! mPreviewZoomOnly' khác, nhưng cái đó được thỏa mãn là 'onScaleEnd' đặt nó thành' false'). – JAB