Android RTL 语言的游标
Android cursor in RTL languages
我在使用 RTL 语言的 android 输入光标时遇到问题。当我处于 RTL 支持布局时,我有两个输入光标,这真的很有趣。
它有真正的解决方案,摆脱这个吗?
我使用此代码制作我的 android UI RTL:
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>
我解决了问题。
只需将编辑文本语言从左到右,问题就解决了。
<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 添加到您的编辑文本并解决问题。
我用下面的方法解决了它..
在您的 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) {
}
});
}
这对我有用!
保留 android:inputType="phone"
而不是 android:inputType="number"
解决了我的问题。
以下片段来自我的 xml :
<EditText
android:hint="xyzz"
android:inputType="phone"
android:id="@+id/num"
android:textColorHint="#000000"
android:layout_gravity="start"
android:textAlignment="viewStart"
android:textDirection="rtl"
android:layout_height="fill_parent"
android:gravity="center_vertical"
android:layout_width="match_parent"
tools:ignore="RtlCompat" />
我在使用 RTL 语言的 android 输入光标时遇到问题。当我处于 RTL 支持布局时,我有两个输入光标,这真的很有趣。 它有真正的解决方案,摆脱这个吗?
我使用此代码制作我的 android UI RTL:
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>
我解决了问题。 只需将编辑文本语言从左到右,问题就解决了。
<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 添加到您的编辑文本并解决问题。
我用下面的方法解决了它..
在您的 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) {
}
});
}
这对我有用!
保留 android:inputType="phone"
而不是 android:inputType="number"
解决了我的问题。
以下片段来自我的 xml :
<EditText
android:hint="xyzz"
android:inputType="phone"
android:id="@+id/num"
android:textColorHint="#000000"
android:layout_gravity="start"
android:textAlignment="viewStart"
android:textDirection="rtl"
android:layout_height="fill_parent"
android:gravity="center_vertical"
android:layout_width="match_parent"
tools:ignore="RtlCompat" />