【问题标题】:How can I set EditText cursor location at center where Hint is already populated?如何在已填充提示的中心设置 EditText 光标位置?
【发布时间】:2014-09-04 03:42:34
【问题描述】:

我有一个如下的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 框中不存在实际文本。 谁能告诉我如何将初始光标定位在“Hello My World”的中间?

提前感谢!

【问题讨论】:

  • 记录长度,看看它是否为零,如果不是,那么它应该可以工作
  • 光标已经在中间
  • 您的hint 会不断变化还是固定不变?
  • 如果您的hint 是静态的,您可以使用editText.setPadding (int left, int top, int right, int bottom);
  • 是的,长度返回提示文本的大小,但 setSelection 方法看不到相同的内容,例如,它认为它填充了 0 长度的文本。显然提示文本与常规文本不同

标签: android android-layout android-activity


【解决方案1】:

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

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

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

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

【讨论】:

  • 它不仅将整个提示文本向右移动 30dp,而且不能使用左侧的前 30dp。我需要的只是最初将光标保持在中间,一旦用户开始输入,它就会从左侧 0dp 区域开始。
【解决方案2】:

试试这个,直接在你的 XML 文件上添加请求焦点。您不必在 Activity 上以编程方式设置光标。

<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 上添加请求焦点,除非您点击它,否则光标将不会显示。 希望对您有所帮助。

【讨论】:

  • 我发现尝试这个没有效果
  • @beachboy 你想对你的edittext做什么你能提供一个屏幕截图吗?
【解决方案3】:

试试这个:

<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

【讨论】:

  • 我在尝试之前阅读了这篇文章,但它没有用。光标停留在文本提示的前面。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-10
  • 1970-01-01
  • 1970-01-01
  • 2018-09-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多