Android adjustpan not working after the first time
来源:互联网 发布:mac本取消开机密码 编辑:程序博客网 时间:2024/06/04 23:26
Android adjustpan not working after the first time
My problem: starting from the second time the software keyboard is shown on the screen, it entirely hides my EditText.
Attribute android:windowSoftInputMode="adjustPan" has been specified in the AndroidManifest.xml, but it works only the first time.
I have the following layout:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="fill_parent" android:orientation="vertical" > <LinearLayout android:layout_width="match_parent" android:layout_height="464dp" android:gravity="top" android:orientation="vertical" android:paddingLeft="16dp" android:paddingRight="16dp" > <ListView android:id="@+id/list" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="10" android:background="#E3E3E2" android:gravity="top" /> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" > <EditText android:id="@+id/addListText" android:layout_width="0dp" android:layout_height="48dp" android:layout_weight="10" android:contentDescription="@string/addItemContentDescription" android:gravity="bottom|center_horizontal" android:inputType="textLongMessage" android:textColor="#E3E3E2" android:visibility="gone" /> <ImageButton android:id="@+id/addTextListButton" android:layout_width="0dp" android:layout_height="48dp" android:layout_weight="1" android:layout_gravity="right" android:background="@android:color/transparent" android:contentDescription="@string/addItemButton" android:scaleType="fitCenter" android:src="@drawable/plus_add" android:visibility="gone" /> </LinearLayout> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="fill_parent" android:gravity="bottom|center_horizontal" android:orientation="horizontal" android:paddingLeft="16dp" android:paddingRight="16dp" > <ImageButton android:id="@+id/syncListsButton" android:layout_width="64dp" android:layout_height="match_parent" android:src="@android:drawable/ic_popup_sync" /> <ImageButton android:id="@+id/showOrHide" android:layout_width="64dp" android:layout_height="match_parent" /> <ImageButton android:id="@+id/delListButton" android:layout_width="64dp" android:layout_height="match_parent" android:src="@android:drawable/ic_menu_delete" /> </LinearLayout></LinearLayout>
The "showOrHide" button shows/hides the "addListText"/"addTextListButton" combo.
When the EditText is shown for the first time and I touch it, the soft keyboard appears on the screen and the "addListText"/"addTextListButton" combo is panned correctly. When I hide the keyboard and then show it again, the keyboard covers completely my addListText editbox!
Any idea on what's going on? I'm testing it on Android 4.2.2.
Please help! Thanks :-)
edit: I've also tried to put the first LinearLayout inside a ScrollView but it doesn't work!
3 Answers
subclassed EditText and overridden the method onKeyPreIme(int keyCode, KeyEvent event) like this:
@Override public boolean onKeyPreIme(int keyCode, KeyEvent event) { if(keyCode == KeyEvent.KEYCODE_BACK) { clearFocus(); } return super.onKeyPreIme(keyCode, event); }
Now when the back key is pressed, the EditText lost the focus. Then tapping it again adjustpan will work.
This may seem a bit silly but I ran into this problem when I set the property gravity of my EditText to either 'center_horizontal' or 'center'. Remove it and you won't run into the problem of the keyboard hiding the EditText the second time (and subsequent ones) when the keyboard comes out.
Here is the code I was originally using that ran into this problem:
<EditText android:layout_width="250dp" android:layout_height="wrap_content" android:gravity="center" />
When I removed the center gravity line from the EditText, the panning worked:
android:gravity="center"
I worked around it by wrapping the EditText in a FrameLayout and centering the entire EditText in the FrameLayout. The one issue it causes is that the EditText will be at least the width of the hinttext, so the first few characters/words typed won't be centered. This was fine for me but your mileage may vary :)
<FrameLayout android:layout_width="250dp" android:layout_height="wrap_content"> <EditText android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" /></FrameLayout>
- Android adjustpan not working after the first time
- Issue 182191:Adjustpan works only first time if EditText's gravity is center or center_horizontal
- For the first time!
- the first time
- The first time using
- The first time
- The first time
- the first time
- the first time
- The first time
- the first time here
- the first time
- The first time !
- 0001The first time
- The First Time
- The first time
- after the first ten days
- Android SetBackGroundColor not working
- 指针与++
- 简易俄罗斯方块
- Android滑动菜单框架完全解析,教你如何一分钟实现滑动菜单特效
- android – 多屏幕适配相关
- 最短路径算法总结(Floyd,bellmen-ford,dijkstra,Spfa)
- Android adjustpan not working after the first time
- FFT
- AngularJS内置指令示例——表单验证
- shell 初始化linux系统脚本
- ListView通过OnScrollListener判断第一项数据或最后一项数据处于可视状态
- android:数据篇-SharedPreference
- 基于ICM的图像切割 MATLAB
- Leetcode ☞ 263. Ugly Number ☆ 【附求质数 prime number 最大公约gcd 最小公倍lcm】
- Specified VM install not found: type Standard VM, name jre7