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
Show activity on this post. You may then use this to test all fields (EditText, AutoCompleteTextView, etc) that may have opened a softkeyboard: InputMethodManager imm = (InputMethodManager) getActivity(). getSystemService(Context.
Hiding the Soft Keyboard Programmatically You can force Android to hide the virtual keyboard using the InputMethodManager, calling hideSoftInputFromWindow, passing in the token of the window containing your edit field. This will force the keyboard to be hidden in all situations.
Kotlin. The visible height may be calculated from the visible rectangle. We can tell if the keyboard has been drawn on top of the image by comparing the visible height to the real height of the view. (hint: this may also be used to determine the height of the keyboard.)
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.
boolean watcherState;
private void isShowing() {
final RelativeLayout relative = (RelativeLayout) findViewById(R.id.parent);
relative.getViewTreeObserver().addOnGlobalLayoutListener(
new OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
Rect r = new Rect();
// r will be populated with the coordinates of your view
// that area still visible.
relative.getWindowVisibleDisplayFrame(r);
int heightDiff = relative.getRootView().getHeight()
- (r.bottom - r.top);
Log.d("Height", heightDiff + "//");
if (heightDiff > 100) { // if more than 100 pixels, its
// probably a keyboard...
watcherState = true;
} else
watcherState = false;
}
});
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With