Android - 键盘覆盖阿拉伯语/ RTL中的EditText

时间:2017-05-10 09:28:30

标签: android android-edittext locale android-softkeyboard android-6.0-marshmallow

我有一个多语言应用,当用户点击它时,我希望EditText向上滑动(屏幕的其余部分),即EditText 每当显示键盘时,始终 在键盘上方可见。

enter image description here

显然,这可以使用android:windowSoftInputMode="adjustResize"

不幸的是,只有当应用语言是英语时,这似乎才能正常工作。当用户将应用语言更改为阿拉伯语时,所有操作系统版本低于7.1.1的键盘上方的EditText幻灯片仅<第一次 。它在Android 7.1.1上按预期工作。

enter image description here

这是Marshmallow 6.0.1及更低版本的已知问题吗?是否存在可以绕过这种情况的黑客攻击或解决方法?

2 个答案:

答案 0 :(得分:1)

要解决此问题,您需要创建customEditText和覆盖 这对我有用。

public class CustomEditText extends android.support.v7.widget.AppCompatEditText {

Context context;

public CustomEditText(Context context, AttributeSet attrs) {
    super(context, attrs);
    this.context = context;
}

@Override
public boolean dispatchKeyEventPreIme(KeyEvent event) {
    if (event.getKeyCode() == KeyEvent.KEYCODE_BACK) {
        public static void hideKeyboard(Context context) {
    InputMethodManager imm = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE);
    imm.toggleSoftInput(InputMethodManager.HIDE_NOT_ALWAYS, 0);
}

        clearFocus();
    }
    return false;
}

}

然后将两行添加到xml

android:descendantFocusability="beforeDescendants"
android:focusableInTouchMode="true"

答案 1 :(得分:0)

enter image description here

一种简单的方法。您可以设置edittext重力以在RTL中显示阿拉伯语,如下所示。在xml或u中都可以动态进行。

在xml中执行此操作

 <EditText
    android:padding="15dp"
    android:layout_width="fill_parent"
    android:hint="رمز القسيمة الاختياري"
    android:id="@+id/register"
    android:textColorHint="#d3d3d3"
    android:layout_height="wrap_content"
    android:gravity="right"
    android:background="@android:color/transparent"
    android:textColor="#000000"
    android:textSize="14sp"
   />

动态地,您可以这样设置

 textmob.setGravity(Gravity.RIGHT); //textmob is object

注意:您可以对textview元素进行