Hint Alignment to the right of password EditText

前端 未结 8 1441
耶瑟儿~
耶瑟儿~ 2021-01-17 17:54

I\'m working on and activity with arabic language. I want the hint of the username and password to start from the right and I have no problem f typing started from the left

相关标签:
8条回答
  • 2021-01-17 18:37

    For AppCompatEditText edit text gravity start worked for me

    <androidx.appcompat.widget.AppCompatEditText
            ......
            android:hint="كلمه السر"
            android:inputType="textPassword"
            android:gravity="start"
           .............../>
    

    This will work only above api 16

    you can also try, Where you must have stored your current language I used this library com.akexorcist:localizationactivity

    if(currentLanguage.country.toLowerCase() == "arabic"){
            etPassword.gravity = GravityCompat.END
    }else{
            etPassword.gravity = GravityCompat.START
    }
    
    0 讨论(0)
  • 2021-01-17 18:40

    add gravity right try this way

    <EditText
                android:id="@+id/input_password"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:hint="كلمة المرور"
                android:textColorHint="#FFFFFF"
                android:inputType="textPassword"
                android:background="@null"
                android:textColor="#FFFFFF"
                android:textSize="20dp"
                android:gravity="right"/>
    

    if your API level 17 and higher you can use

    android:textDirection="anyRtl"
    
    0 讨论(0)
  • 2021-01-17 18:49

    Use Gravity Attribute to Adjust the Hint for EditText

            <EditText
            android:id="@+id/input_password"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:hint="كلمة المرور"
            android:textColorHint="#FFFFFF"
            android:gravity="right"
            android:inputType="textPassword"
            android:background="@null"
            android:textColor="#FFFFFF"
            android:textSize="20dp"/>
    
    0 讨论(0)
  • 2021-01-17 18:50

    This one works fine for me

    android:textAlignment="viewStart"

    The hint direction will be at the correct side

    0 讨论(0)
  • 2021-01-17 18:52

    Here my solution (workaround) for editText with type = password. Work on Android 5, Android 6.

    edittext_password = (EditText) rootView.findViewById(R.id.edittext_password);
                if (RTLUtils.isLeftToRightLanguage()) {
                    edittext_password.setGravity(Gravity.START);
                } else {
                    // Force a right-aligned text entry, otherwise latin character input,
                    // like "abc123", will jump to the left and may even disappear!
                    edittext_password.setTextDirection(View.TEXT_DIRECTION_RTL);
                    // Make the hint display on the right hand side
                    edittext_password.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS);
                }
                edittext_password.addTextChangedListener(new TextWatcher() {
                    @Override
                    public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
                        isLeftToRight = RTLUtils.isLeftToRightLanguage(charSequence.toString());
                    }
    
                    @Override
                    public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
                    }
    
                    @Override
                    public void afterTextChanged(Editable editable) {
                        if (editable.length() > 0) {
                            isLeftToRight = RTLUtils.isLeftToRightLanguage(editable.toString());
                            if (isLeftToRight) {
                                edittext_password.setGravity(Gravity.START);
                                edittext_password.setTextDirection(View.TEXT_DIRECTION_LTR);
                                edittext_password.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD | InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS);
                                // Move the cursor to the correct place (after the typed character)
                                edittext_password.setSelection(editable.length());
                            } else {
                                //edittext_password.setGravity(Gravity.END);
                                edittext_password.setTextDirection(View.TEXT_DIRECTION_RTL);
                                // When a character is typed, dynamically change the EditText's
                                // InputType to PASSWORD, to show the dots and conceal the typed characters.
                                edittext_password.setInputType(InputType.TYPE_CLASS_TEXT |
                                        InputType.TYPE_TEXT_VARIATION_PASSWORD |
                                        InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS);
                                // Move the cursor to the correct place (after the typed character)
                                edittext_password.setSelection(editable.length());
                            }
                        } else { // empty text
                            if (!RTLUtils.isLeftToRightLanguage()) {
                                // Must be in this order (first setInputType then setTextDirection)
                                edittext_password.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS);
                                edittext_password.setTextDirection(View.TEXT_DIRECTION_RTL);
                            }
                        }
                    }
                });
    
      public static boolean isLeftToRightLanguage() {
            Bidi bidi = new Bidi(Locale.getDefault().getDisplayLanguage(), Bidi.DIRECTION_DEFAULT_LEFT_TO_RIGHT);
            if (bidi.isLeftToRight()) {
                return true;
            } else {
                return false;
            }
        }
    
        public static boolean isLeftToRightLanguage(String text) {
            Bidi bidi = new Bidi(text, Bidi.DIRECTION_DEFAULT_LEFT_TO_RIGHT);
            if (bidi.isLeftToRight()) {
                return true;
            } else {
                return false;
            }
        }
    

    And here result: (Arabic soft keyboard)

    and English soft keyboard:

    0 讨论(0)
  • 2021-01-17 18:55

    Use 'gravity' attribute:

    <EditText
        android:id="@+id/input_password"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:hint="كلمة المرور"
        android:textColorHint="#FFFFFF"
        android:gravity="right"
        android:inputType="textPassword"
        android:background="@null"
        android:textColor="#FFFFFF"
        android:textSize="20dp"/>
    
    0 讨论(0)
提交回复
热议问题