Как показать определенную часть веб-страницы внутри веб-обозревателя с помощью экрана для всех устройств
Я хочу показать веб-страницу внутри WebView. До этого это нормально.
Но у меня есть WebPage (как указано ниже), и я хочу определенную часть. Я имею в виду, что только верхний левый угол должен быть видимым в соответствии с режимом экрана во всех устройствах.
Я решаю эту проблему с двух последних трех дней.
Я хочу:. Я хочу показать верхний левый угол веб-страницы, чтобы показать внутри Webview. Независимо от того, что Stratergy может быть с масштабированием или любым другим вариантом, но он должен соответствовать экрану для всего устройства.
Еще одна вещь Я не могу изменить исходный код веб-страницы, потому что он исправлен.
Мне нужно управлять самим кодом.
![enter image description here]()
Что я пробовал: Я ссылаюсь на ссылки Stackoverflow, но не повезло.
Вот мой код.
WebView wv;
wv = (WebView) findViewById(R.id.webview_MyPoops);
wv.getSettings().setJavaScriptEnabled(true);
// wv.setInitialScale(185);
// wv.setInitialScale(30);
String URL = "MY_LINK";
wv.loadUrl(URL);
WebSettings webSettings = wv.getSettings();
webSettings.setSavePassword(false);
webSettings.setSaveFormData(false);
webSettings.setJavaScriptEnabled(true);
webSettings.setSupportZoom(true);
webSettings.setLoadWithOverviewMode(true);
webSettings.setUseWideViewPort(true);
Я получаю полную веб-страницу, показанную на устройствах.
Он отлично работает в моем устройстве LG (у которого есть разрешение 480 * 800), но в большом устройстве или вкладках, таких как Galaxy Tab2, я получаю очень маленькое изображение верхнего левого угла, а все остальные области экрана - только фон WebPage.
Ниже приведен снимок экрана Galaxy Tab2 после запуска вышеуказанного кода.
Пожалуйста, у вас есть предложение, в котором мне не хватает. Спасибо в Advance.
Ответы
Ответ 1
попробуйте с этим кодом переместить эту работу для u.
webview.setInitialScale(getScale());
private int getScale(){
Display display = ((WindowManager) getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
int width = display.getWidth();
Double val = new Double(width)/new Double(200);
Log.e("hh", "** "+val);
val = val * 100d;
Log.e("hh", "** "+val);
return val.intValue();
}
Ответ 2
WebView x;
x.setInitialScale(1);
Это возможное увеличение расстояния. Но для некоторых сайтов это выглядит просто UGLY.
Это была вторая версия, которую я нашел
test1.getSettings().setDefaultZoom(ZoomDensity.FAR);
Это приятный все круче, чем кажется, просто уменьшилось достаточно далеко, но все-таки не то, что я искал.
И теперь вот окончательное решение, которое у меня есть.
x.getSettings().setLoadWithOverviewMode(true);
x.getSettings().setUseWideViewPort(true);
В основном, на что они отвечают в этом вопросе.
setLoadWithOverviewMode(true)
Загрузка WebView полностью уменьшена
setUseWideViewPort(true)
Ответ 3
Вы можете попробовать использовать HtmlCleaner (примеры того, как его использовать здесь), чтобы получить html с веб-страницы, затем извлеките часть, которую вы хотите отобразить, и загрузите ее в WebView, используя: WebView.loadData();
.
Я использовал этот метод в одном из моих приложений для переформатирования страницы, чтобы было проще использовать на мобильном устройстве.
Ответ 4
На странице HTML вы можете иметь что-то вроде target-densitydpi=240;
в зависимости от типа устройства, просто установите этот параметр из кода Java, страница будет автоматически соответствовать целевой плотности.
Ответ 5
Я считаю, что исправление должно быть сделано только на уровне веб-страницы, и в идеале WebView
не может делать никаких трюков. WebView
является просто браузером (конкретным браузером хрома), который должен просто выполнять рендеринг, как указано на веб-странице.
Чтобы исправить вашу проблему, вы должны попробовать изменить CSS веб-страницы.