1.进入activity防止自动弹出输入法和顶上底部导航栏
在清单文件Androidmainfest.xml文件中activity增加属性android:windowSoftInputMode=“adjustPan”,就可以了
<activity android:name=".MainActivity"
android:windowSoftInputMode="adjustPan"
/>
2.Error:Execution failed for task ‘:app:compileDebugJavaWithJavac’ 解决方案
gradlew compileDebugJavaWithJavac 然后点击enter 会提示你错误
3.Error:Execution failed for task ‘:app:preDebugAndroidTestBuild’.
Conflict with dependency ‘com.android.support:support-annotations’ in project ‘:app’. Resolved versions for app (26.1.0) and test app (27.1.1) differ. See https://d.android.com/r/tools/test-apk-dependency-conflicts.html for details.
这个错误大概的意思是sdk的问题,具体我也没深究。网上说的加
在app下的build.gradle文件中的dependences {}中添加如下代码:
androidTestCompile('com.android.support:support-annotations:26.1.0') {
force = true
}
如果没有解决问题,
那就把app下的build.gradle文件中
把下面的3行干掉
ok成功了,如果你用ConstraintLayout进行拖拽布局的话,就不能这样。
再说一下ConstraintLayout的优点
1.在开发层级较少的功能型app时用传统的五大布局应该就可以了。这样控件的属性也是简洁明了
2.在开发层级较多的娱乐型app时可以用ConstraintLayout进行布局,这样可以减少布局层级,提高性能。它更多的类似于相对布局。
4.Service not registered
直接加
private boolean isBind = false;
isBind = bindService(svcMgrIntent, this, Context.BIND_AUTO_CREATE);
if (isBind) {
unbindService(this);
isBind =false;
}
5.Warning:Ignoring InnerClasses attribute for an anonymous inner class
在工程的混淆配置文件 proguard-rules.pro 中加入下面这句代码即可:
-keepattributes EnclosingMethod
6.Landroid/support/v4/animation/AnimatorCompatHelper;
类找不到原因
在support包26的时候这个类没有了。在 support包25跟24都有。网上有如下代码解决(不建议)
在你的build.gradle(app module)文件下添加:
configurations.all {
resolutionStrategy.eachDependency { DependencyResolveDetails details ->
def requested = details.requested
if (requested.group == 'com.android.support') {
if (!requested.name.startsWith("multidex")) {
details.useVersion '24.1.0'
}
}
}
}
原理应该是将support 包改为 24.1.0 由于项目需要26的一些类,不能改低版本,就可以复制低版本类。
7.java.lang.IllegalStateException: View can not be anchored to the the parent CoordinatorLayout
这个是关于锚定的报错
app:layout_anchor="@id/content_layout"
在compile 'com.android.support:design:23.2.0’之后
就不能在自己的父布局引用父布局
正确的如下,可以用帧布局替代。
<android.support.design.widget.CoordinatorLayout
android:id="@+id/content_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<FrameLayout
android:id="@+id/attachment_layout"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<android.support.design.widget.FloatingActionButton
android:id="@+id/fab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/fab_margin_end"
android:layout_marginTop="@dimen/fab_margin_top"
android:scaleType="center"
android:src="@drawable/ic_action_save"
app:borderWidth="0dp"
app:elevation="@dimen/fab_elevation"
app:layout_anchor="@id/attachment_layout"
app:layout_anchorGravity="top|end"
app:rippleColor="@color/accent_highlight" />
</android.support.design.widget.CoordinatorLayout>
8.java中"".equals(A)与A.equals("")一样不?
不一样
如果a为null
a = null;
a.equals("")出错nullPointerException
如果写为"".equals(a)–>就可以防止nullPointerException啦
9.Android输入框直接弹出数字输入法
情况一:数字框
直接et中添加android:inputType=“number”
情况二:密码框只能输入数字
bind et
//上代码
et_password.setInputType(InputType.TYPE_CLASS_NUMBER);
et_password.setTransformationMethod(PasswordTransformationMethod.getInstance());
情况三:
仿支付宝支付密码
需自定义
情况四:
设置android:digits属性,允许输入数字和字母。
设置android:inputType为"number",将键盘切换为数字键盘。
代码效果
//配置EditText
<EditText
......
android:digits="@string/alphabet_and_number"
android:inputType="number" />
//修改string.xml
<resources>
<string name="alphabet_and_number">abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789</string>
</resources>