这些问题已经在模板项目中已经被修复好了,具体修复过程如下
给 Button 添加如下属性即可,模板工程已经把该属性封装到Style中,直接引用style="@style/ButtonStyle"即可
android:textAllCaps="false"
给 Button 设置样式如下即可,模板工程已经把该属性封装到Style中,直接引用style="@style/ButtonStyle"即可
style="Widget.AppCompat.Button.Borderless"
某些低配置机型上出现该问题比较明显,如果配置好的机型则看不出来,添加一个透明的Activity主题样式
<!-- 解决启动页白屏的问题 -->
<style name="LauncherTheme" parent="AppTheme">
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowBackground">@android:color/transparent</item>
</style>
在清单文件中给启动页的Activity设置主题样式
<!-- 启动页面(因为使用了LauncherTheme,所以不要给这个Activity设置screenOrientation属性,会导致崩溃) -->
<activity
android:name=".ui.activity.LauncherActivity"
android:theme="@style/LauncherTheme">
<!-- 程序入口 -->
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
还有一点需要特别注意,Android 8.0 及之后不允许透明主题的Activity设置屏幕方向,所以请不要给Activity设置该属性,否则会导致崩溃
这个问题在只要界面有 WebView 的情况才会发生,在 Android 5.1 经过测试,在 WebView 中长按选择复制文字时,会显示一个类似于 Actionbar 的控件,但是这个东西叫做ActionMode,会将当前 Activity 所在布局顶下去,这时会和我们项目中的标题栏出现冲突,类似于一个界面同时出现了两个标题栏的效果,解决的方法很简单,就是让出现的 ActionMode 悬浮在 Activity上,这样就把项目中的标题栏遮挡住了,不会出现那种类似一个界面出现两种标题栏的效果,当 WebView 取消长按复制文字后,ActionMode也会随之消失
如何让 ActionMode 悬浮在 Activity 上呢?其实很简单,在 Application 主题中加入以下属性
<!-- ActionMode覆盖Actionbar,不顶下来 -->
<item name="windowActionModeOverlay">true</item>
<item name="android:windowContentOverlay">@null</item>
<!-- ActionMode的颜色 -->
<item name="actionModeBackground">@color/colorPrimary</item>
这个问题导致是因为LauncherActivity作为APP的第一个界面,销毁后没有保存任务栈的状态,导致我们在桌面上启动的时候系统误认为当前启动LauncherActivity的任务栈已经被销毁,所以重新创建了新的任务栈并且跳转到LauncherActivity,最终导致用户从桌面点击APP图标时,总是跳转到LauncherActivity而不是HomeActivity
<!-- 主页界面 -->
<activity
android:name=".ui.activity.HomeActivity"
android:alwaysRetainTaskState="true"
android:launchMode="singleTop" />
Android P 限制了明文流量的网络请求,非加密的流量请求都会被系统禁止掉。 如果当前应用的请求是 htttp 请求,而非 https ,这样就会导系统禁止当前应用进行该请求,如果 WebView 的 url 用 http 协议,同样会出现加载失败,https 不受影响
在 res 下新建一个 xml 目录,然后创建一个名为:network_security_config.xml 文件 ,该文件内容如下
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<base-config cleartextTrafficPermitted="true" />
</network-security-config>
然后在 AndroidManifest.xml application 标签内应用上面的xml配置
<application
android:name=".App"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:networkSecurityConfig="@xml/network_security_config"
android:roundIcon="@mipmap/ic_launcher_round"
android:theme="@style/AppTheme" />