1.问题描述:
项目中某个布局文件(布局相当复杂)添加EditText输入框,在清单文件对应activity中设置属性 android:windowSoftInputMode="adjustResize" ,弹出软件盘不存在遮盖问题。但是一旦给这个EditText设置背景之后就会出现EditText底部被遮盖的情况。如下图:
目前还没有找到原因。但是自己写demo时就不会出现遮盖的情况。
2.解决办法:
设置EditText的layer-list xml背景,如下:
<?xml version="1.0" encoding="UTF-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item>
<shape>
<solid android:color="#0000" />
</shape>
</item>
<!-- 主体背景颜色值 -->
<item android:bottom="10dp">
<shape android:shape="rectangle" >
<solid android:color="#fff" />
<padding
android:bottom="10dp" />
<corners android:radius="3dp" />
<stroke
android:width="1dp"
android:color="#efefef" />
</shape>
</item>
</layer-list>
原理:
EditText设置2层背景,底层背景正常大小,第二层背景设置 bottom = 10dp使第二层背景距离底部10dp,从而第二层背景不在被遮盖。
效果图如下:
最后:打完收工。
-------------以下内容为2018.05.21更新-----------------
很长时间过去了,又找到了一个方法防止键盘覆盖EditText底部一点点。
在res/drawable下创建 InsertDrawble bg.xml
<?xml version="1.0" encoding="utf-8"?>
<inset xmlns:android="http://schemas.android.com/apk/res/android"
android:drawable="@color/transparent"
android:insetLeft="0dp"
android:insetRight="0dp"
android:insetTop="10dp"
android:insetBottom="10dp">
</inset>
android:drawable="@color/transparent"//被包裹的背景
android:insetLeft="0dp"//距离昨天的距离
android:insetRight="0dp"//距离右边的距离
android:insetTop="10dp"//距离上面的距离
android:insetBottom="10dp"//距离底部的距离
添加完drawable文件之后写个布局文件里面看下效果
<LinearLayout
android:id="@+id/ll_bottom"
android:layout_width="match_parent"
android:layout_height="55dp"
android:gravity="center_vertical"
app:layout_constraintBottom_toTopOf="@id/take_photo"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
android:layout_marginBottom="10dp"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:gravity="center"
android:text="输入文字"/>
<EditText
android:layout_width="match_parent"
android:layout_height="match_parent"
android:hint="在此处输入文字bottom"
android:background="@null"
/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="55dp"
android:gravity="center_vertical"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintBottom_toTopOf="@id/ll_bottom"
android:layout_marginBottom="10dp"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:gravity="center"
android:text="输入文字"/>
<EditText
android:layout_width="match_parent"
android:layout_height="match_parent"
android:hint="在此处输入文字top"
android:singleLine="true"
android:background="@drawable/bg" />
</LinearLayout>
效果对比:
图一:EditText去除默认的背景之后,键盘紧挨着光标
图二:设置了InsertDrawable之后 可以看到键盘的顶部和EditText文字(以及光标)的底部有了一定的距离