我是靠谱客的博主 魔幻可乐,最近开发中收集的这篇文章主要介绍Android adjustpan not working after the first time Android adjustpan not working after the first time,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

Android adjustpan not working after the first time

up vote 19 down vote favorite
4

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!

share edit flag
 
 
start a bounty

3 Answers

active oldest votes
up vote 27 down vote accepted

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.

share edit flag
 
 
thanks, this worked for me! –  bilbo20  Apr 25 '13 at 17:17
 
What a trick.!! –  MKJParekh  May 9 '13 at 7:01
 
tnx..@MKJParekh –  Chirag Shah  May 9 '13 at 7:02
1
 
Weird but does not work for me. Maybe it's because the EditText is inside a fragment… will have to investigate :( –  alopix  Oct 16 '14 at 7:33
1
 
Looks like I found the solution: there has to be at least one parent that is focusable, otherwise of course, the focus cannot be cleared ;) –  alopix  Oct 16 '14 at 7:42
 
up vote 38 down vote

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.

share edit flag
 
2
 
Amazing! And by amazing I mean it's amazing how apparently unrelated things can mess things up in Android. –  Medo  Dec 23 '14 at 13:58
4
 
What a ridiculous bug.... Thank you for realizing this though... –  Sakiboy  Feb 19 '15 at 20:30
 
You save my life, thanks –  jlopez  Feb 24 '15 at 15:14
1
 
Has anyone reported that to Google? –  DoDo  Aug 6 '15 at 16:19
1
 
OK, I reported that to Google: code.google.com/p/android/issues/detail?id=182191 –  DoDo  Aug 7 '15 at 8:04
 
up vote 0 down vote

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>
share edit flag
 

最后

以上就是魔幻可乐为你收集整理的Android adjustpan not working after the first time Android adjustpan not working after the first time的全部内容,希望文章能够帮你解决Android adjustpan not working after the first time Android adjustpan not working after the first time所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(51)

评论列表共有 0 条评论

立即
投稿
返回
顶部