如何在已填充提示的中心设置EditText光标位置?

时间:2014-09-04 03:42:35

标签: android android-layout android-activity

我有一个editTextbox,如下所示,需要在其中间设置光标。

<EditText
    android:id="@+id/editText"
    android:layout_width="300dp"
    android:layout_height="wrap_content"
    android:layout_marginTop="30dp"
    android:layout_centerHorizontal="true"
    android:gravity="center_horizontal"
    android:textCursorDrawable="@drawable/my_custom_cursor"
    android:hint="Hello My World"/>

我试过了:

editText = (EditText) findViewById(R.id.editText);
    int length = editText.getHint().length();
    editText.setSelection(length/2);  <-- problem

长度返回0,因为editText框中不存在真实文本。 谁能告诉我如何设置初始光标位于&#34; Hello My World&#34; ?

谢谢你!

3 个答案:

答案 0 :(得分:0)

试试这个:

<EditText
    android:id="@+id/editText"
    android:layout_width="300dp"
    android:layout_height="wrap_content"
    android:layout_marginTop="30dp"
    android:layout_centerHorizontal="true"
    android:gravity="center"
    android:hint="Hello My World"/>

参考:

Android: Edittext with gravity center not working on device

答案 1 :(得分:0)

如果hint不是动态的,您可以使用以下内容。

 editText.setPadding (int left, int top, int right, int bottom);

只需给left一些int值,光标就会移动。

或者您可以将android:paddingLeft="30dp"添加到xml文件中的EditText

答案 2 :(得分:0)

试试这个,只需将请求焦点直接添加到XML文件即可。您不必以编程方式在您的活动上设置光标。

<EditText
    android:id="@+id/editText"
    android:layout_width="300dp"
    android:layout_height="wrap_content"
    android:layout_marginTop="30dp"
    android:layout_centerHorizontal="true"
    android:gravity="center"
    android:hint="Hello My World">

 <requestFocus />

</EditText>

如果您没有在EditText上添加请求焦点,除非您点击它,否则光标将不会显示。 希望这有帮助。