In my application, the device soft-keyboard is covering the EditTextViews, so user cannot see what he is typing.
So i want to hide other Views(like a button in my case), to make the EditTextViews visible.
But instead on doing something like
EditText.onFocus(){
//hide button
}
for every EditText, i want to do something like
if(soft-keyboard.isOpenned())
//hide button
}
how to track if soft-keyboard is openned or closed?
Edit:
Actually my layout is this:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<LinearLayout
android:layout_width="0dp"
android:layout_height="0dp"
android:background="@android:color/transparent"
android:focusable="true"
android:focusableInTouchMode="true" >
</LinearLayout>
<ImageView
android:id="@+id/Logo"
android:layout_width="45dp"
android:layout_height="45dp"
android:src="@drawable/wic_logo_small" />
<Button
android:id="@+id/goButton_iWant"
android:layout_width="35dp"
android:layout_height="45dp"
android:layout_alignParentRight="true"
android:background="@color/black"
android:gravity="center_vertical|center_horizontal"
android:text="@string/go" />
<AutoCompleteTextView
android:id="@+id/searchAutoCompleteTextView_iWant"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_toLeftOf="@id/goButton_iWant"
android:layout_toRightOf="@id/Logo"
android:hint="@string/search"
android:textColor="@color/white" />
<TextView
android:id="@+id/iWantLabel"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@id/iWantPageLogo"
android:background="@color/grey"
android:gravity="center_vertical|center_horizontal"
android:text="@string/iWant"
android:textColor="@color/white" />
<ScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/ScrollViewiWant"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/iWantLabel"
android:scrollbars="vertical" >
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<TextView
android:id="@+id/iNeedToBuy"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@id/iWantLabel"
android:gravity="center_vertical|center_horizontal"
android:padding="5dp"
android:text="@string/iNeedToBuy"
android:textColor="@color/white"
android:textSize="20dp" />
<AutoCompleteTextView
android:id="@+id/iNeedToBuyEditText"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@id/iNeedToBuy"
android:hint="@string/product"
android:imeOptions="actionNext"
android:singleLine="true"
android:textColor="@color/white"
android:textSize="15dp" />
<TextView
android:id="@+id/error1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@id/iNeedToBuyEditText"
android:height="0dp"
android:text=""
android:textColor="@color/error_color"
android:textSize="12dp" />
<TextView
android:id="@+id/priceWillingToPay"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@id/error1"
android:gravity="center_vertical|center_horizontal"
android:text="@string/priceWillingToPay"
android:textColor="@color/white"
android:textSize="20dp" />
<EditText
android:id="@+id/priceWillingToPayEditText"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@id/priceWillingToPay"
android:hint="@string/price"
android:inputType="number"
android:singleLine="true"
android:textColor="@color/white"
android:textSize="15dp" />
<TextView
android:id="@+id/error2"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@id/priceWillingToPayEditText"
android:height="0dp"
android:text=""
android:textColor="@color/error_color"
android:textSize="12dp" />
<TextView
android:id="@+id/needToBuyItBy"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/error2"
android:gravity="center_vertical|center_horizontal"
android:text="@string/needToBuyItBy"
android:textColor="@color/white"
android:textSize="20dp" />
<EditText
android:id="@+id/date_iWant"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@id/needToBuyItBy"
android:clickable="true"
android:cursorVisible="false"
android:focusable="false"
android:hint="@string/date"
android:inputType="none"
android:singleLine="true"
android:textColor="@color/white"
android:textSize="15dp" />
<TextView
android:id="@+id/error3"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@id/date_iWant"
android:height="0dp"
android:text=""
android:textColor="@color/error_color"
android:textSize="12dp" />
<DatePicker
android:id="@+id/datePicker_iWant"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_below="@id/error3"
android:hint="@string/date"
android:padding="5dp"
android:textColor="@color/black"
android:textSize="15dp" />
<TextView
android:id="@+id/iAmIn"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/date_iWant"
android:gravity="center_vertical|center_horizontal"
android:text="@string/iAmIn"
android:textColor="@color/white"
android:textSize="20dp" />
<Spinner
android:id="@+id/city_spinner_iWant"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/iAmIn"
android:prompt="@string/citySpinner"
android:textColor="@color/white"
android:textSize="20dp" />
<Button
android:id="@+id/submitButton_iWant"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/city_spinner_iWant"
android:gravity="center_vertical|center_horizontal"
android:text="@string/submit"
android:textColor="@color/white"
android:textSize="20dp" />
<TextView
android:id="@+id/emptySpace"
android:layout_width="wrap_content"
android:layout_height="50dp"
android:layout_below="@id/submitButton_iWant"
android:gravity="left" />
</RelativeLayout>
</ScrollView>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/buttons_iWant"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true" >
<Button
android:id="@+id/feedButton_iWant"
android:layout_width="wrap_content"
android:layout_height="30dp"
android:layout_margin="0dp"
android:layout_weight="1"
android:background="@color/white"
android:text="@string/feed"
android:textColor="@color/black" />
<Button
android:id="@+id/iWantButton_iWant"
android:layout_width="wrap_content"
android:layout_height="30dp"
android:layout_margin="0dp"
android:layout_weight="1"
android:background="@color/white"
android:text="@string/iwant"
android:textColor="@color/black" />
<Button
android:id="@+id/shareButton_iWant"
android:layout_width="wrap_content"
android:layout_height="30dp"
android:layout_margin="0dp"
android:layout_weight="1"
android:background="@color/white"
android:text="@string/share"
android:textColor="@color/black" />
<Button
android:id="@+id/profileButton_iWant"
android:layout_width="wrap_content"
android:layout_height="30dp"
android:layout_margin="0dp"
android:layout_weight="1"
android:background="@color/white"
android:text="@string/profile"
android:textColor="@color/black" />
</LinearLayout>
</RelativeLayout>
The problem comes when i am typing text in the EditTextViews
in the ScrollView
For handling softkepad detection, set the
android:ConfigChanges
attribute for your activity in theAndroidManifest.xml
file:Here, the
keyboard|keyboardHidden
flag inandroid:configChanges
tells the system that the Activity wishes to invoke theonConfigurationChanged()
method of your Activity instead, which allow you to handle the softkebaord changes.Here’s an example
onConfigurationChanged()
which replaces the main content view for the currently running Activity:Odds are, your
onConfigurationChanged()
method will need to do almost exactly the same kind of work as your Activity’sonCreate()
method, so it’s probably a good idea to DRY out your code by factoring out your layout setup into a separate helper method that you invoke from bothonCreate()
andonConfigurationChanged()
.You should probably use
android:windowSoftInputMode
attribute in the manifest file to describe how the screen layout should arrange when soft keyboard shows up (http://developer.android.com/guide/topics/manifest/activity-element.html#wsoft)android:windowSoftInputMode="adjustResize"
:android:windowSoftInputMode="adjustPan"
There is no direct way to find it, but i come up with a dirty solution and it work fine. The idea behind is to compare the height of two views your activity and keyboard.