项目中需要一个提现功能,EditText 输入一些必要的信息
太简单了对吧,EditText 获取焦点时,弹出键盘,输入框至于键盘之上。首先manifest文件注册activity 设置
windowsSoftInputMode="adjustPan|stateHidden",
adjustPan | 该Activity主窗口并不调整屏幕的大小以便留出软键盘的空间。相反,当前窗口的内容将自动移动以便当前焦点从不被键盘覆盖和用户能总是看到输入内容的部分。这个通常是不期望比调整大小,因为用户可能关闭软键盘以便获得与被覆盖内容的交互操作。 |
stateHidden | 当用户选择该 Activity时,软键盘被隐藏——也就是,当用户确定导航到该 Activity时,而不是返回到它由于离开另一个 Activity |
页面代码如下
<LinearLayout
...>
<TextView
...
android:text="持卡人"/>
<EditText
...
android:gravity="center_vertical|right"
android:hint="持卡人姓名"/>
</LinearLayout>
<LinearLayout
...>
<TextView
...
android:text="银行卡号"/>
<EditText
...
android:gravity="center_vertical|right"
android:hint="银行卡号"
android:inputType="number"/>
</LinearLayout>
<LinearLayout
...>
<TextView
...
android:text="银行类型"/>
<EditText
...
android:gravity="center_vertical|right"
android:hint="如工商银行">
</LinearLayout>
<LinearLayout
...>
<TextView
...
android:text="开户支行"/>
<EditText
...
android:gravity="center_vertical|right"
android:hint="银行卡开户行支行信息"/>
</LinearLayout>
四个EditText,文件要显示在右边所以gravity="center_vertical|right",其中银行卡只是输入数字,故inputType="number"。实际效果如下。
当输入银行卡号,键盘弹起时,键盘并不是每一次都会把EditText顶起来。只有从另外一个EditText焦点切换回来时弹出键盘才能顶起,如果此时焦点处于此EditText之上,想修改信息时,无奈键盘挡住内容只能盲写,太瞎了。而另外三个EditText为何不会出现这样的情况呢?他们之间的差异仅仅时inputType 不同。而我注释掉inputType="number",果然神奇的每次都顶起来了。那么仅仅时inputType造成的吗?,此时我把gravity="center_vertical|right"注释掉,inputType="number"保持不变
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/edit_text"
android:hint="NUMBER"
android:inputType="number"/>
键盘同样每次都可以顶起EditText。此时我的结论如下:(当EditText grivaty="right" input="number" 时,无法保证每次键盘弹起时,EditText都置于键盘之上。ps其它情况请自行测试)。可是实际的情况并不是这样,