我的应用中有一个简单的登录activity
,其中包含电子邮件和密码字段。电子邮件hint
中的cursor
和EditText
位置存在一个奇怪的问题:
从图像中可以看出,默认情况下,cursor
不在第一个位置。提示后显示 (好像hint
是输入文字)
就layout
而言,密码EditText
与电子邮件密码相同,但它没有出现此问题:
任何人都知道为什么会这样?我该如何解决?
这是活动的布局:
<ScrollView
android:id="@+id/login_form"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<LinearLayout
style="@style/LoginFormContainer"
android:orientation="vertical" >
<EditText
android:id="@+id/email"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="left"
android:hint="@string/prompt_email"
android:inputType="textEmailAddress"
android:maxLines="1"
android:singleLine="true" />
<EditText
android:id="@+id/password"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="left"
android:hint="@string/prompt_password"
android:imeActionId="@+id/login"
android:imeActionLabel="@string/action_sign_in_short"
android:imeOptions="actionUnspecified"
android:inputType="textPassword"
android:maxLines="1"
android:singleLine="true" />
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dip"
android:gravity="center" >
<!-- sign in button -->
<TextView
android:gravity="center"
android:id="@+id/sign_in_button"
android:layout_width="120dip"
android:layout_height="50dip"
android:layout_alignParentRight="true"
android:layout_marginLeft="25dip"
android:layout_marginRight="20dip"
android:background="@drawable/btn_background_login_and_offered_and_followers"
android:clickable="true"
android:onClick="signInButton"
android:text="@string/action_sign_in_register" />
<!-- sign up button -->
<TextView
android:gravity="center"
android:id="@+id/sign_up_button"
android:layout_width="120dip"
android:layout_height="50dip"
android:layout_marginLeft="20dip"
android:layout_toLeftOf="@id/sign_in_button"
android:background="@color/Gray"
android:onClick="signUpButton"
android:text="@string/action_sign_up_register" />
</RelativeLayout>
</LinearLayout>
</ScrollView>
如果需要任何其他代码部分,请告诉我添加它。
答案 0 :(得分:6)
试试我的代码:
android:textCursorDrawable="@null"
它对我有用。
答案 1 :(得分:0)
试试这个
http://developer.android.com/reference/android/text/Selection.html#setSelection(android.text.Spannable, int)
一个简单的yourEditText.setSelection(0);
就足够了
答案 2 :(得分:0)
试试这个:
android:gravity="left|center"
答案 3 :(得分:0)
据我所知,你想要为你的EditText(它应该是RTL)和LTR输入文本(如电子邮件,密码和......)提供波斯语提示
在我的应用中,我这样做,在XML中:
<EditText
android:id="@+id/editText2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="101dp"
android:ems="10"
android:hint="ایمیل را وارد نمائید" >
<requestFocus />
</EditText>
在Java中:
final EditText editTxt = (EditText) findViewById(R.id.editText2);
editTxt.setGravity(Gravity.RIGHT);
editTxt.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
// TODO Auto-generated method stub
if (editTxt.getText().length() == 0)
{
editTxt.setGravity(Gravity.RIGHT);
}
else {
editTxt.setGravity(Gravity.LEFT);
}
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
}
@Override
public void afterTextChanged(Editable s) {
}
});
它给了我,我的目标结果。提示右对齐,当用户开始输入时,键入的文本对齐到左边,这样游标问题也会解决:D
答案 4 :(得分:0)
五年后,我们仍然遇到这个问题。我想出的使光标稍微不那么难看的方法是对所有EditText使用android:textDirection="ltr"
或android:textDirection="rtl"
。这将迫使光标移至提示的末尾/开始,当然我们仍然可以使用重力将提示置于中心或任何我们想要的地方。
答案 5 :(得分:0)
您可以使用 TextInputEditText 也可以使用 android:textAlignment="viewStart"
这是一个例子:
<com.google.android.material.textfield.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<com.google.android.material.textfield.TextInputEditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/enter_password"
android:inputType="textPassword"
android:paddingHorizontal="25dp"
android:paddingVertical="10dp"
android:textAlignment="viewStart"/>
</com.google.android.material.textfield.TextInputLayout>