3

我有一个带有提示的文本框,但我希望始终显示提示,即使在 TB 中有输入时也是如此。示例是 Gmail 应用程序中的“收件人”字段。

4

2 回答 2

2

您可以使用 3 种方法(剧透 - 使用编号 3),因为正如我在评论中提到的,在 Gmail 示例中,这不是实际提示:

  1. 在我看来,使用线性布局,看起来更干净:

    <LinearLayout android:layout_width="fill_parent"
              android:layout_height="wrap_content">
    <TextView android:text="@string/Hint"
              android:layout_margin="5dp"
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"/>
    <EditText android:layout_width="fill_parent"
              android:inputType="text"
              android:layout_height="wrap_content"/>    
    </LinearLayout>
    
  2. 使用相对布局,获得模仿 Gmail 应用程序的结果:

    注意:可能会有问题,因为文本将显示在提示的顶部,请参阅解决方案 3。

    <RelativeLayout android:layout_marginTop="10dp"
              android:layout_width="fill_parent"
              android:layout_height="wrap_content">
        <TextView android:text="@string/Hint"
              android:paddingLeft="10dp"
              android:layout_marginBottom="0dp"
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"/>
        <EditText android:layout_width="fill_parent"
              android:inputType="text"
              android:layout_height="wrap_content"/>    
    

    结果如下图所示:

    自定义永久提示

    编辑:

  3. 使用 Drawable

    这似乎是一个更好的解决方案(我个人只是通过剪切 TextView 的 1:1 显示来创建它,以这种方式进行正确测量),这将允许更清晰的布局代码,并且文本将知道可绘制对象:

    <RelativeLayout android:layout_marginTop="10dp"
         android:layout_width="fill_parent"
              android:layout_height="wrap_content"
              >
    <EditText android:layout_width="fill_parent"
              android:inputType="text"
              android:gravity="top"
              android:drawableLeft="@drawable/Hint"
              android:layout_height="wrap_content"/>    
    

    可绘制的提示

于 2013-07-07T23:42:07.360 回答
0

首先想到的就是插入两个editText布局的相对布局。First over second.at the top - 将背景设置为 android.R.color.transparent 使用相对布局的 top 11t!在下面的项目中 - 设置提示(你想要的)并尝试输入文本。可能您将指定顶部的第一个元素的填充以更好地显示。

哦。还有一件事情。也许把editText作为背景背景图片——但对可扩展性不利。

于 2013-07-07T23:16:11.777 回答