2016-02-13 2 views
5

У меня проблема с курсором ввода android на языках RTL. Когда я нахожусь в макете поддержки RTL, у меня есть два курсора ввода, и это действительно смешно. У этого есть реальное решение, чтобы избавиться от этого?Курсор Android в языках RTL

Я использую этот код, чтобы сделать мой андроид RTL UI:

getWindow().getDecorView().setLayoutDirection(View.LAYOUT_DIRECTION_RTL); 

И это мой XML для просмотра текста:

<android.support.design.widget.TextInputLayout 
     android:id="@+id/input_layout" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content"> 
     <EditText 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:inputType="numberDecimal" 
      android:id="@+id/myID" 
      android:maxLines="1" 
      android:focusableInTouchMode="true" 
      android:layout_weight="0.25" 
      android:layout_gravity="center_horizontal" 
      android:hint="phone Number" 
      android:maxLength="20" 
      android:gravity="center" /> 
    </android.support.design.widget.TextInputLayout> 

enter image description here

+0

Возможно, я из-за того, что вы установили гравитационную силу тяжести в центр, и курсор запутался. Это не должно произойти, но попробуйте левую гравитацию, тогда проблема может не возникнуть. лучше дать значение силы тяжести –

+0

@CreativeAndroid Я сделал все, что вы сказали, и все еще та же проблема. –

+0

опубликуйте свой edittext xml –

ответ

1

Я решить эту проблему. Просто измените язык редактирования слева направо и проблема решена.

<EditText 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:inputType="number" 
    android:ems="10" 
    android:id="@+id/PhoneNoET" 
    android:layout_marginTop="64dp" 
    android:layout_below="@+id/textView6" 
    android:layout_centerHorizontal="true" 
    android:textAlignment="center" 
    android:maxLength="11" 
    android:layoutDirection="ltr"/> 

Добавить выше layoutDirection в свой текст редактирования и устранить проблему.

0

Я решил его, используя ниже ..

В макете XML, для редактирования текстового поля добавить ->

android:textDirection="anyRtl" 

Здесь "EditText" ваш взгляд на редактирование текстового поля. то есть

EditText editText = (EditText) findViewById(R.id.edit_text); 

Затем программно добавьте наблюдатель текста для этого текста редактирования.

editText.addTextChangedListener(new TextWatcher() { 
       @Override 
       public void beforeTextChanged(CharSequence s, int start, int count, int after) { 

       } 

       @Override 
       public void onTextChanged(CharSequence s, int start, int before, int count) { 
        editText.setSelection(s.length()); // this line is very important for setting cursor position 
       } 

       @Override 
       public void afterTextChanged(Editable s) { 

       } 
      }); 
     } 

Это сработало для меня!

Смежные вопросы