编辑框中提示的自定义位置。

25
我想知道是否有办法在编辑文本视图底部放置一个提示,然后让用户从框的顶部开始输入文本。
作为额外的问题,是否有办法让提示在用户开始输入文本后不消失。
3个回答

37

您可以使用"gravity"属性(如http://developer.android.com/reference/android/widget/TextView.html#setGravity(int)中所述)设置文本的位置。因此,要将文本放在底部,您需要:

android:gravity="bottom"

回答你的额外问题:不,当文本输入到编辑文本视图中时是不能显示提示的。只有当该框为空时显示提示是被定义为行为,正如http://developer.android.com/reference/android/widget/TextView.html#setHint(int)所述。

(我知道链接是关于TextView的,但EditText从TextView派生了所有的文本定位和提示处理功能。)


1
谢谢,我猜想就是这样。我试图使用TextWatcher函数实现一个文本计数器,并将其作为提示显示在文本框底部。我已经成功实现了文本计数器和android:gravity相关功能的工作——不过我觉得把提示放在EditText字段内会更好……可惜这是做不到的。 - hwrdprkns

8

事实上,确实有一种方法可以防止提示隐藏,并且它非常酷 :-)

它可以很容易地让您获得浮动标签外观和平滑动画,而且它是来自Android本身的。不需要额外的库和材料。

试试这个:

<android.support.design.widget.TextInputLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
        <EditText
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:hint="Touch me and I'll fly!"/>
</android.support.design.widget.TextInputLayout>

你可以使用其他XML标签来更改行为,例如android:gravity="start|center|end"等标签。

作为奖励,你可以使用错误消息 :) 这是相关问题的链接:https://dev59.com/k10Z5IYBdhLWcg3w4jly#30953551

对不起,我没有足够的声望来发布图像,请自己处理:

http://i0.wp.com/androidlift.info/wp-content/uploads/2015/09/Screenshot_2015-09-28-17-03-561.png

享受吧 :-)


1
谢谢,这很酷,它正在工作,更重要的是,它与被接受的答案相反,其中它说:“回答您的奖励问题;不,您不能在输入文本到编辑文本视图时显示提示。仅在框为空时显示提示是定义的行为,如所述“ - Saman
1
你需要为TextInputLayout添加设计支持库:implementation 'com.android.support:design:28.0.0'。 - Ashwin

4
使用android:gravity和android:hint存在一个问题,即它们在光标位置方面是相互关联的。当您使用gravity定位提示并开始输入文本时,它会在与您的提示相同的位置输入文本,如果您希望它从传统的左上角开始,则会出现问题。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接