我的应用中有一个简单的登录activity
,包含邮箱和密码字段。在邮件EditText
中存在奇怪的问题,与hint
和cursor
位置有关:
如图所示,默认情况下,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>
如果需要其他代码部分,请告诉我添加。
android:gravity="start"
而不是android: gravity="left"
,看看 Android 的 RTL 支持是否引起了问题。这可能需要在清单文件中的<application>
中添加android:supportsRtl="true"
:http://android-developers.blogspot.fr/2013/03/native-rtl-support-in-android-42.html - CommonsWareandroid:supportsRtl="true"
。将其更改为android:gravity="start"
会使光标向右移动并位于提示的开头。但我希望它在左边。 - Mahm00dandroid:gravity="end"
然后看看会发生什么。 - CommonsWare