Skip to content

Commit

Permalink
[TIMOB-23757] Fix TextField keyboard overlap
Browse files Browse the repository at this point in the history
  • Loading branch information
Gary Mathews committed Apr 3, 2017
1 parent 3b3ae5f commit 2140339
Show file tree
Hide file tree
Showing 3 changed files with 45 additions and 3 deletions.
2 changes: 1 addition & 1 deletion android/modules/ui/res/layout/titanium_ui_edittext.xml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<EditText xmlns:android="http://schemas.android.com/apk/res/android"
<ti.modules.titanium.ui.widget.TiUIEditText xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/titanium_ui_edittext"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
package ti.modules.titanium.ui.widget;

import android.content.Context;
import android.os.Build;
import android.util.AttributeSet;
import android.view.Gravity;
import android.view.KeyEvent;
import android.view.ViewGroup;
import android.widget.EditText;

public class TiUIEditText extends EditText {

public TiUIEditText(Context context, AttributeSet attributeSet) {
super(context, attributeSet);
}

@Override
public boolean onKeyPreIme(int keyCode, KeyEvent event) {
// TIMOB-23757: https://code.google.com/p/android/issues/detail?id=182191
if (Build.VERSION.SDK_INT < 24 && (getGravity() & Gravity.LEFT) == 0 && keyCode == KeyEvent.KEYCODE_BACK) {
ViewGroup view = (ViewGroup) getParent();
view.setFocusableInTouchMode(true);
view.requestFocus();
}
return super.onKeyPreIme(keyCode, event);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
import org.appcelerator.titanium.view.TiUIView;

import ti.modules.titanium.ui.AttributedStringProxy;
import android.content.Context;
import android.graphics.Rect;
import android.graphics.Typeface;
import android.os.Build;
Expand All @@ -40,6 +41,8 @@
import android.view.KeyEvent;
import android.view.View;
import android.view.View.OnFocusChangeListener;
import android.view.ViewGroup;
import android.view.inputmethod.InputMethodManager;
import android.view.inputmethod.EditorInfo;
import android.widget.EditText;
import android.widget.TextView;
Expand Down Expand Up @@ -84,7 +87,7 @@ public class TiUIText extends TiUIView
private boolean isTruncatingText = false;
private boolean disableChangeEvent = false;

protected EditText tv;
protected TiUIEditText tv;

public TiUIText(final TiViewProxy proxy, boolean field)
{
Expand All @@ -102,7 +105,7 @@ public TiUIText(final TiViewProxy proxy, boolean field)
}
return;
}
tv = (EditText) TiApplication.getAppCurrentActivity().getLayoutInflater().inflate(tvId, null);
tv = (TiUIEditText) TiApplication.getAppCurrentActivity().getLayoutInflater().inflate(tvId, null);

tv.addOnLayoutChangeListener(new View.OnLayoutChangeListener()
{
Expand Down Expand Up @@ -433,6 +436,18 @@ protected KrollDict getFocusEventObject(boolean hasFocus)
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent keyEvent)
{
// TIMOB-23757: https://code.google.com/p/android/issues/detail?id=182191
if (Build.VERSION.SDK_INT < 24 && (tv.getGravity() & Gravity.LEFT) == 0) {
if (getNativeView() != null) {
ViewGroup view = (ViewGroup) getNativeView().getParent();
view.setFocusableInTouchMode(true);
view.requestFocus();
}
Context context = TiApplication.getInstance().getApplicationContext();
InputMethodManager inputManager = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE);
inputManager.hideSoftInputFromWindow(tv.getWindowToken(), 0);
}

String value = tv.getText().toString();
KrollDict data = new KrollDict();
data.put(TiC.PROPERTY_VALUE, value);
Expand Down

0 comments on commit 2140339

Please sign in to comment.