【问题标题】:EditText with non-selectable grayed out prefix带有不可选择的灰色前缀的 EditText
【发布时间】:2011-03-29 18:22:53
【问题描述】:

我正在寻找一种在 EditText 中将灰色文本作为前缀的方法。此文本不应该是可选择的。 当您使用 Gmail 撰写邮件时,它有点像“收件人”字段。唯一(视觉上的)区别是,当您开始输入时,此文本会消失。

在 Android 中有什么技巧可以实现这一点吗?

谢谢!

【问题讨论】:

  • Gmail 应用正在做的是 android:hint="To",这是可行的,但您需要做一些研究
  • 谢谢!在我的情况下,该字段中已经有文本。这就像“EUR 2500”,其中 EUR 部分是只读的/不可选择的。我确实认为这很难解决

标签: android android-edittext


【解决方案1】:

您可以使用“2500 欧元”部分的图片。这可以显示在您的编辑框中,而不会影响其余部分。按照代码:

Drawable editTextDrawable = context.getResources().getDrawable(imageId);
    editTextDrawable.setBounds(0, 0, editTextDrawable.getIntrinsicWidth(),
            editTextDrawable.getIntrinsicHeight());

可在edittext中使用drawable如下:

editTxtItemName.setCompoundDrawables(,
            ListViewConstants.editTextDrawable, null, null, null);

【讨论】:

  • 嘿你也可以在布局中使用edittext的属性,即android:drawableLeft
【解决方案2】:

作为最终解决方案,您可以重写整个 EditText 类,方法是对其进行扩展和修改,使其具有您设置的自定义背景和您设置的预定义填充。

将 EUR 作为背景,将其定位在左侧,然后给 EditText 的起始填充,使用户键入的文本在 EUR 文本之后开始。

这可能被认为是一种矫枉过正或穷人解决这个问题的方法,但它仍然是最终的选择。也许不是最聪明的,我也不知道它是否能确定:P

一切顺利!

【讨论】:

  • 是的,这也是我的想法……但是,由于我是一名初级 Android 开发人员,我不知道如何设置这样的自定义背景。我用谷歌搜索了它,但很难找到。有什么提示吗?
  • 创建一个类,让它扩展类EditText。在此处阅读EditText 来源:grepcode.com/file/repository.grepcode.com/java/ext/… 并尝试找出您需要重写的方法。在创建 EditText 时,引用这个类,创建这个类的一个对象,然后使用它。我知道这对你来说可能很难,但肯定会很有趣!
  • 把它放在后台不太好用,因为如果你输入的文本超出视图的容量,它就不会滚动。
猜你喜欢
  • 2020-07-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-05
  • 2021-09-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多