Ответ 1
Наконец, мой ответ: "Невозможно скрыть/удалить эту кнопку на WebView
в Android 2.3.
Можно ли удалить кнопки масштабирования ? Его отображение при масштабировании WebView. Мне нужно управлять зуммированием без этих кнопок. Я использую android 2.3.
Я использовал ниже код,
WebView webview = (WebView) findViewById(R.id.webview);
webview.getSettings().setBuiltInZoomControls(false);
webview.getSettings().setJavaScriptEnabled(true);
FrameLayout mContentView = (FrameLayout) getWindow().
getDecorView().findViewById(android.R.id.content);
final View zoom = webview.getZoomControls();
mContentView.addView(zoom, ZOOM_PARAMS);
zoom.setVisibility(View.GONE);
Наконец, мой ответ: "Невозможно скрыть/удалить эту кнопку на WebView
в Android 2.3.
getSettings().setBuiltInZoomControls(false);
используйте приведенную выше строку кода для удаления кнопок масштабирования.
В API >= 11 вы можете использовать:
webView.getSettings().setBuiltInZoomControls(true);
webView.getSettings().setDisplayZoomControls(false);
Обновлено: Если вы хотите увеличить/уменьшить масштаб без кнопок увеличения, используйте приведенный ниже код (скопированный из здесь)
public class Main extends Activity {
private WebView myWebView;
private static final FrameLayout.LayoutParams ZOOM_PARAMS =
new FrameLayout.LayoutParams(
ViewGroup.LayoutParams.FILL_PARENT,
ViewGroup.LayoutParams.WRAP_CONTENT,
Gravity.BOTTOM);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.webview);
myWebView = (WebView)findViewById(R.id.webView);
FrameLayout mContentView = (FrameLayout) getWindow().
getDecorView().findViewById(android.R.id.content);
final View zoom = myWebView.getZoomControls();
mContentView.addView(zoom, ZOOM_PARAMS);
zoom.setVisibility(View.GONE);
myWebView.loadUrl("http://www.almondmendoza.com");
}
}
Измените это на своем AndroidManifest:
android:minSdkVersion="8"
:
android:minSdkVersion="11"
чем использовать это в настройках веб-представления:
getSettings().setBuiltInZoomControls(true);
getSettings().setDisplayZoomControls(false);
Следуйте этому коду. Это поможет вам.
Main.java
WebView wv = (WebView) findViewById(R.id.webview1) ;
WebSettings webSettings = wv.getSettings();
webSettings.setBuiltInZoomControls(false);
wv.loadUrl(url);
Просто добавьте эту строку:
webSettings.setDisplayZoomControls(false);
кнопки масштабирования можно удалить, реализовав свой собственный веб-просмотр и используя отражение, чтобы получить встроенные средства управления увеличением и сделать их невидимыми для API ниже 11 (Honeycomb). Код, как, таким образом, работает для всех API до андроида nougat;
public class CustomWebView extends WebView{
private ZoomButtonsController zoom_controll = null;
public CustomWebView(Context context) {
this(context, null);
}
public CustomWebView(Context context, AttributeSet attrs) {
this(context, attrs, android.R.attr.webViewStyle);
}
public CustomWebView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
initWebSettings();
}
@SuppressLint("NewApi")
private void initWebSettings() {
WebSettings webSettings = getSettings();
webSettings.setSupportZoom(true);
webSettings.setBuiltInZoomControls(true);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
webSettings.setAllowContentAccess(true);
webSettings.setDisplayZoomControls(false);
} else {
try {
Class webview = Class.forName("android.webkit.WebView");
Method method = webview.getMethod("getZoomButtonsController");
zoom_controll = (ZoomButtonsController) method.invoke(this, null);
} catch (Exception e) {
e.printStackTrace();
}
}
}
@Override
public boolean onTouchEvent(MotionEvent event) {
if(zoom_controll != null)
zoom_controll.getZoomControls().setVisibility(View.GONE);
return super.onTouchEvent(event);
}
}
Если вы хотите отключить только элементы управления увеличением, используйте это:
webView.getSettings().setDisplayZoomControls(false);
Вот решение:
if (ev.getAction() == MotionEvent.ACTION_DOWN ||
ev.getAction() == MotionEvent.ACTION_POINTER_DOWN ||
ev.getAction() == MotionEvent.ACTION_POINTER_1_DOWN ||
ev.getAction() == MotionEvent.ACTION_POINTER_2_DOWN ||
ev.getAction() == MotionEvent.ACTION_POINTER_3_DOWN) {
if (multiTouchZoom && !buttonsZoom) {
if (ev.getPointerCount() > 1) {
getSettings().setBuiltInZoomControls(true);
getSettings().setSupportZoom(true);
} else {
getSettings().setBuiltInZoomControls(false);
getSettings().setSupportZoom(false);
}
}
}
if (!multiTouchZoom && buttonsZoom) {
if (getPointerCount(ev) > 1) {
return true;
}
}
В вашем случае multiTouchZoom
истинно, а buttonsZoom
- false.
Я нашел здесь включить/отключить масштабирование в Android WebView, и это сработало для меня.