最近在使用webview做页面开发,项目上要求webview在获取到焦点的时候需要有边框线,于是添加上了webview的选中效果,但是出现了网页中的内容压选中框的情况。之后给webview添加padding也不能解决这个问题,从网上搜索后发现,webview设置padding是不会起作用的,这个是webview的一个bug。但是问题还是地解决的,于是想了如下的webview选中的替代方案:

  1. webview设置背景色为透明色
  2. 在webview下方放一个LinearLayout里面有个ImageView,大小刚好比webview大出一个边框
  3. 当webview获取到焦点的时候,显示有边框的ImageView,当webview失去焦点的时候,显示正常的无边框的ImageView。

下面贴出代码:

1.xml文件配置(LinearLayout在webview下面并且比其大4dp)

<LinearLayout
android:id="@+id/web_linerlayout"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginLeft="2dp"
android:layout_alignParentBottom="true"
android:layout_below="@+id/title_Relay"
android:layout_toRightOf="@id/btn"
android:layout_marginTop="5dp"
android:layout_marginRight="8dp"
android:background="@color/3C123456"
android:padding="0dp">
</LinearLayout>
<WebView
android:id="@+id/web_WebView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginLeft="6dp"
android:layout_alignParentBottom="true"
android:layout_below="@+id/title_Relay"
android:layout_toRightOf="@id/btn"
android:layout_marginTop="9dp"
android:layout_marginRight="11dp"
android:layout_marginBottom="4dp"
android:layerType="software"
android:hardwareAccelerated="true">
</WebView>

2.JAVA代码

final LinearLayout linearlayout = (LinearLayout)findViewById(R.id.web_linerlayout);
final ImageView imageView = new ImageView(MainActivity.this);
imageView.setImageResource(R.drawable.webview_select);
LayoutParams layoutParams = new LayoutParams(linearlayout.getLayoutParams().width, linearlayout.getLayoutParams().height);
imageView.setLayoutParams(layoutParams);
linearlayout.addView(imageView); WebView shopWeb = (WebView) findViewById(R.id.web_WebView);
shopWeb.setOnFocusChangeListener(new View.OnFocusChangeListener()
public void onFocusChange(View v, boolean hasFocus) {
if(!hasFocus){
linearlayout.removeView(imageView);
}else{
linearlayout.addView(imageView);
}
}
});

android webview内容压线问题解决方法的更多相关文章

  1. 【转】 Android WebView内容宽度自适应

    我们平常在项目中有可能会遇到网页的内容是通过json数据传递到app上面用WebView来显示的,这时候我们通常都要调整内容的总宽度不超过父容器的宽度,这样子用户可以不用左右滑动就可以看到全部的内容. ...

  2. Android 5.x 权限问题解决方法

    android 5.x开始,引入了非常严格的selinux权限管理机制,我们经常会遇到因为selinux权限问题造成的各种avc denied困扰.  本文结合具体案例,讲解如何根据log来快速解决9 ...

  3. 关于Android WebView内容不同屏幕兼容处理

    最近团队里项目开发APP时,其中有个界面要用到WebView来显示,而不用原生的控件. 开发这个界面的时候遇到一个问题,就是Android的碎片化导致有众多屏幕分辨率,不同分辨率的屏幕对这个界面Web ...

  4. android webview内存泄露解决方法

    完整的activity的onDestroy()方法:@Override protected void onDestroy() { if( mWebView!=null) { // 如果先调用destr ...

  5. Android webview通过http get下载文件下载两次的问题及解决方法

    一.现象 一般通过Android webview进行下载文件的方法是 1.重写DownloadListener的onDownloadStart方法,在onDownloadStart方法中弹出对话框提示 ...

  6. Android webview 写入cookie的解决方法以及一些属性设置

    原文地址:https://www.2cto.com/kf/201703/616868.html Android webview 写入cookie的解决方法以及一些属性设置,webview怎么设置写入C ...

  7. Android WebView 不支持 H5 input type="file" 解决方法

    最近因为赶项目进度,因此将本来要用原生控件实现的界面,自己做了H5并嵌入webview中.发现点击H5中 标签 不能打开android资源管理器. 通过网络搜索发现是因为 android webvie ...

  8. Android WebView 调试方法

    调试Android WebView中的h5页面,通常就是通过alert和抓包工具来定位问题,效率低且无法直接调试样式或打断点,可谓是事倍功半.本文介绍一下我在项目中使用的新方法,能够通过chrome的 ...

  9. 安装Android SDK Manager的“Failed to fetch refused”问题解决方法

    安装Android SDK Manager的"Failed to fetch refused"问题解决方法 一见 2014/11/11 问题现象: 步骤一:修改hosts文件(wi ...

随机推荐

  1. easyui源码翻译1.32--DateTimeBox(日期时间输入框)

    前言 扩展自$.fn.datebox.defaults,使用$.fn.datetimebox.defaults重写默认值对象.下载该插件翻译源码 和日期输入框类似,日期时间输入框允许用户选择日期和指定 ...

  2. 《ArcGIS Engine+C#实例开发教程》第四讲 状态栏信息的添加与实现

    原文:<ArcGIS Engine+C#实例开发教程>第四讲 状态栏信息的添加与实现 摘要:在上一讲中,我们完成了 MapControl 和PageLayoutControl两种视图的同步 ...

  3. HashMap与HashTable联系与区别

    HashMap与HashTable 1.hashMap去掉了HashTable 的contains方法,但是加上了containsValue()和containsKey()方法. 2.hashTabl ...

  4. Python和C|C++的混编(一):Python调用C、C++---Boost库

    不使用boost.python库来直接构建dll的话比较繁琐,下面实例是借助boost库实现python对C.C++的调用 1 首先确定已经安装python和boost库,本例测试环境是python2 ...

  5. Co-variant array conversion from x to y may cause run-time exception

    http://stackoverflow.com/questions/8704332/co-variant-array-conversion-from-x-to-y-may-cause-run-tim ...

  6. VJP1456 最小总代价(状压)

    链接 这题卡了一天  刚开始没考虑第一个传的和最后一个传的 感觉挺简单 啪啪的敲完 居然还过了17组数据.. 正解:dp数组一维保存状态 一维保存当前传到了谁 再枚举是由谁传过来的 这样可以保证正确性 ...

  7. 在eclipse里卸载已安装的插件[例如Android Development Tools ADT]

    在eclipse里卸载已安装的插件                                        有四种方法: 1.到plugins和features目录中找到你要卸载的插件的文件夹, ...

  8. POJ_3061_Subsequence_(尺取法)

    描述 http://poj.org/problem?id=3061 给定长度为n的数列整数以及整数S.求出总和不小于S的连续子序列的长度的最小值,如果解不存在输出0. Subsequence Time ...

  9. 深入理解c语言_从编译器的角度考虑问题_纪念Dennis Ritchie先生

    开源中国: Dennis Ritchie教授过世了,他发明了C语言,一个影响深远并彻底改变世界的计算机语言.一门经历40多年的到今天还长盛不训的语言,今天很多语言都受到C的影 响,C++,Java,C ...

  10. iOS8新增加的frameworks, 在目前基于7以上开发的情况下, 使用下列sdk要注意设置成optional

    Added frameworks: AVKitCloudKitCoreAudioKitCoreAuthenticationHealthKitHomeKitLocalAuthenticationMeta ...