Поскольку никто не кажется, придумали другое решение, чем с помощью отражения - я не знаю ни одной альтернативы на данный момент - я написал быстрый фрагмент кода, который показывает, как чтобы обходить верхний предел действия масштабирования.
Обратите внимание, что приведенный ниже код будет работать только на ICS и, возможно, на сотах, но в настоящее время у меня нет планшета, который должен осмотреть, если внутренняя работа основывается на том же классе ZoomManager
. Gingerbread, Froyo и Eclair, похоже, реализуют функцию масштабирования более или менее непосредственно в классе WebView
. В приведенном ниже примере должно быть довольно просто добавить некоторый код, чтобы также учитывать эти операционные системы.
// just set an Activity's content view to a single WebView for this test
WebView mWebview = new WebView(this);
setContentView(mWebview);
// retrieve the ZoomManager from the WebView
Class<?> webViewClass = mWebview.getClass();
Field mZoomManagerField = webViewClass.getDeclaredField("mZoomManager");
mZoomManagerField.setAccessible(true);
Object mZoomManagerInstance = mZoomManagerField.get(mWebview);
// modify the "default max zoom scale" value, which controls the upper limit
// and set it to something very large; e.g. Float.MAX_VALUE
Class<?> zoomManagerClass = Class.forName("android.webkit.ZoomManager");
Field mDefaultMaxZoomScaleField = zoomManagerClass.getDeclaredField("mDefaultMaxZoomScale");
mDefaultMaxZoomScaleField.setAccessible(true);
mDefaultMaxZoomScaleField.set(mZoomManagerInstance, Float.MAX_VALUE);
Вам нужно это для работы в целом или по конкретному вкусу Android? Я спрашиваю, потому что реализация масштабирования «WebView» была изменена совсем немного по разным выпускам. Вы должны иметь возможность использовать отражение, чтобы обойти это «ограничение», но лучше подготовиться к целому ряду различных случаев, если вы хотите, чтобы он работал с различными версиями устройств/ОС. –
Ну, мне нужно, чтобы он работал на ICS (4.0.3). и предпочтительно на планшетных устройствах и смартфонах. В настоящее время я тестирую свое приложение на планшете Transcend Asus EEE. Но я хотел бы, чтобы мое приложение работало на таких устройствах, как Samsung Galaxy SII. нет ли единого решения, которое работает для всех устройств Android? – Wottah