技术标签: android webview 禁止放大缩小
在为客户开发Android应用程序时,我们遇到了同样的问题,我设法绕过了这一限制。
我查看了WebView类的Android源代码,发现了updateZoomButtonsEnabled()-method与ZoomButtonsController-object一起使用,以根据浏览器的当前比例来启用和禁用缩放控件。
我搜索了一种返回ZoomButtonsController-instance的getZoomButtonsController()方法,并找到了-method,该方法返回了这个实例。
尽管已声明该方法public,但WebView-documentation中未记录该方法,并且Eclipse也找不到它。因此,我WebView对此进行了一些思考,并创建了自己的-subclass来覆盖onTouchEvent()-method,该方法触发了控件。
public class NoZoomControllWebView extends WebView {
private ZoomButtonsController zoom_controll = null;
public NoZoomControllWebView(Context context) {
super(context);
disableControls();
}
public NoZoomControllWebView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
disableControls();
}
public NoZoomControllWebView(Context context, AttributeSet attrs) {
super(context, attrs);
disableControls();
}
/**
* Disable the controls
*/
private void disableControls(){
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.HONEYCOMB) {
// Use the API 11+ calls to disable the controls
this.getSettings().setBuiltInZoomControls(true);
this.getSettings().setDisplayZoomControls(false);
} else {
// Use the reflection magic to make it work on earlier APIs
getControlls();
}
}
/**
* This is where the magic happens :D
*/
private void getControlls() {
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 ev) {
super.onTouchEvent(ev);
if (zoom_controll != null){
// Hide the controlls AFTER they where made visible by the default implementation.
zoom_controll.setVisible(false);
}
return true;
}
}
您可能想要删除不必要的构造函数,并对可能的异常做出反应。
尽管这看起来很笨拙且不可靠,但可以回溯到API级别4(Android 1.6)。
正如@jayellos在评论中指出的那样,私有getZoomButtonsController()方法在Android 4.0.4及更高版本中不再存在。
但是,它不需要。使用条件执行,我们可以检查我们是否在具有API Level 11+的设备上,并使用公开的功能(请参阅@Yuttadhammo答案)来隐藏控件。
我更新了上面的示例代码来做到这一点。
文章浏览阅读5.8k次,点赞4次,收藏19次。CC2530定时器1CC2530有5个定时器(定时器1,定时器2,定时器3,定时器4,睡眠定时器),定时器1是一个16位定时器,具有一个可编程的分频器,一个16位周期值,和五个各自可编程的计数器/捕获通道,每个都有一个16位比较值。..._t1cctl0
文章浏览阅读63次。在JSP中一共有9个隐含对象,这个9个对象我可以在JSP中直接使用。因为在service方法已经对这个九个隐含对象进行声明及赋值,所以可以在JSP中直接使用。 - pageContext 类型:PageContext 代表:当前页面的上下文 作用:可以获取到页面中的其他隐含对象,同时它还是一个域对象。 - request 类型:HttpServlet..._jsp中9个隐含对象
文章浏览阅读1.6w次,点赞23次,收藏141次。Android开发之打包APK详解_安卓打包apk
文章浏览阅读3.7k次,点赞2次,收藏6次。错误回顾网关的配置server: port: 80spring: application: name: api-gateway#springCloudgateway配置项对相应 GatewayPropweties cloud: # 网关配置 gateway: # 路由配置:对应RouteDefinition数组 routes: - id: desk-route #路由的编号,保证是唯一的 # _gateway 404
文章浏览阅读87次。例如nth_element(arr, arr+5, arr+10);是将从小到大排序后应该在arr[5]的元素放在arr[5]这个位置上。若要寻找第k大的数,nth_element(数组名,数组名+元素个数-k,数组名+元素个数)其用法为:函数语句:nth_element(数组名,数组名+第k个元素,数组名+元素个数)冒泡是每次将0~n-i范围内的最大数放在arr[n-1-i]位置,i代表了冒泡的次数。c++的STL里也有快速选择的函数nth_element()快速选择是用于分开较大的数和较小的数。_c++实现一行数中任意两个乘积最大
文章浏览阅读786次。安装开发c/c++的库,命令:==apt install _linux安装c++ mysql库
文章浏览阅读97次。基于OSS的数据查询分析和BI报表数据存储在OSS后,有多种查询分析的方法,包括阿里云MaxCompute、DataLakeAnalytics产品等Severless查询分析服务,也可以自建Spark、Presto、Imapla应用来分析OSS上的数据。实验步骤(DataLakeAnalytics on OSS)本次实验,主要介绍,如何使用OSS+..._sql on oss
文章浏览阅读3.1k次。前情提示:在上篇博文中,我将一个使用GUI-Guider生成的图形界面移植到了ESP32设备上。显示成功,详情参见:如何将使用GUI-Guider生成的LVGL移植到ESP32https://blog.csdn.net/QTRPio/article/details/124120432背景:但是我使用GUI-Guider生成的图形界面还包含了几个图片按键: 条码识别; 手势识别;..._lvgl adc-button
文章浏览阅读1.3w次,点赞2次,收藏12次。BLE 协议架构总体上分成3块,从下到上分别是:控制器(Controller),主机(Host) 和应用端(Apps);3者可以在同一芯片类实现,也可以分不同芯片内实现,控制器(Controller)是处理射频数据解析,接收和发送,主机(Host)是控制不同设备之间如何进行数据交换;应用端(Apps)实现具体应用。控制器ControllerController实现射频相关的模拟和数_ble 协议
文章浏览阅读3.7k次,点赞73次,收藏284次。本文转载自 仟语仟寻,作者 霍仟这几天抽空把张一鸣的所有微博看了一遍,发现2010年的微博最好,就是他30岁左右的时候,那时候刚创业没多久,在微博上认真分享自己的思考和观点。到了2012年附近,开始做今日头条,每天都是大量转发今日头条上的文章到微博,干货变少了。后面就更新得越来越少。我从他的微博中,试图找到他成功的钥匙,得到了一些只言片语,但是仅仅是这些只言片语,我都觉得对我的启发很大。他从南开大学毕业,妻子是大学同学,毕业后去过微软,后来从微软离职,然后去过饭否,应该跟过王兴王慧文一阵子,后来_张一鸣微博干货
文章浏览阅读881次。2019独角兽企业重金招聘Python工程师标准>>> ..._unidac 帮助
文章浏览阅读1.1w次,点赞9次,收藏15次。报错信息:[root@localhost ~]# yum install bind bind-utils.x86_64 -y已加载插件:fastestmirror, langpacksCould not retrieve mirrorlist http://mirrorlist.centos.org/?release=7&arch=x86_64&repo=os&infra=stock error was14: curl#6 - "Could not resolve hos_could not resolve host: mirrors.cqu.edu.cn; unknown error