#.仿微信 QQ聊天布局 顶部title固定,底部是EditText,中间是RecyclerView,弹出软键盘,RecyclerView上移,标题不动
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(mActivity, LinearLayoutManager.VERTICAL, false); linearLayoutManager.setStackFromEnd(true); //关键 设置此项,当软键盘弹出时,布局会自动顶上去,在结合AndroidManifest.xml设置属性 recy.setLayoutManager(linearLayoutManager); AndroidManifest.xml
#.打包apk报错:ERROR: Received close_notify during handshake
貌似是jcenter里面的东西下载不了引起的,所以找了一下之前的工程把配置拷贝过来,果然OK了,主要修改如下
修改build.gradle
buildscript {
repositories {
mavenLocal()
// 解决国内 google 访问问题 maven { url 'https://maven.google.com' }
maven { url 'https://dl.google.com/dl/android/maven2/' }
// 解决国内 jcenter maven2 访问问题 jcenter() mavenCentral()
maven{ url 'https://maven.aliyun.com/repository/public'}
maven { url 'https://jitpack.io' }
maven { url 'https://dl.bintray.com/umsdk/release' }
google()
jcenter()
mavenCentral()
maven { url 'https://repo1.maven.org/maven2/' }
}
}
allprojects {
repositories {
mavenLocal()
// 解决国内 google 访问问题 maven { url 'https://maven.google.com' }
maven { url 'https://dl.google.com/dl/android/maven2/' }
// 解决国内 jcenter maven2 访问问题 jcenter() mavenCentral()
maven{ url 'https://maven.aliyun.com/repository/public'}
maven { url 'https://jitpack.io' }
maven { url 'https://dl.bintray.com/umsdk/release' }
google()
jcenter()
mavenCentral()
maven { url 'https://repo1.maven.org/maven2/' }
}
}
#.Manifest merger failed with multiple errors, see logs问题处理(可能引起 Warning:Default Activity not found)
首先进入命令行,输入命令
gradlew processDebugManifest --stacktrace
获取更多的log信息
#. 华为手机,翻转动画,不显示
问题描述:属性动画 rotation动画,在华为手机上 显示不出来。
问题原因:应该是手机定制系统或cpu的原因
解决方式:不用属性动画,用基础动画。
#.WebView:onReceiveError 监听,修改错误界面
问题描述:wap显示出来了,又出现错误界面了;
问题原因:onReceiveError 中直接显示错误界面,在android 6.0(23)以后,资源文件加载失败也会回调onReceiveError 。需要做判断。
解决方式:添加request.isForMainFrame()判断;需要兼容23以前的版本,以下代码:
// 旧版本,会在新版本中也可能被调用,所以加上一个判断,防止重复显示
@Override
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
super.onReceivedError(view, errorCode, description, failingUrl);
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M){
return;
}
// 在这里显示自定义错误页
}
// 新版本,只会在Android6及以上调用
@TargetApi(Build.VERSION_CODES.M)
@Override
public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) {
super.onReceivedError(view, request, error);
if (request.isForMainFrame()){ // 或者: if(request.getUrl().toString() .equals(getUrl()))
// 在这里显示自定义错误页
}
}