如何在用户输入期间及之后在EditText中显示提示? 是否可以在EditText控件的右侧放置提示,但是用户输入文本 - 在左侧?
以下是我正在寻找的一个例子:
答案 0 :(得分:1)
所以我发现了一个非常简单的解决方案,有点棘手,但它确实有效 - 只需要使用EditText进行相对布局输入,使用TextView进行内部提示:
<RelativeLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Some text"
android:layout_alignParentLeft="true"
android:id="@+id/editText2"
android:layout_gravity="center"
/>
<TextView
android:id="@+id/text_hint"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:text="HintText"
android:textSize="18sp"
android:layout_marginRight="10dp"
android:textColor="#808080"
/>
</RelativeLayout>
答案 1 :(得分:0)
当用户在字段中输入文本时,您可以使用onFocusChangeListener显示editText。
myEditText.setOnFocusChangeListener(new OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (hasFocus) {
myEditText.setHint(R.string.hint);
}
}
});
关于提示的对齐方式,无法正确对齐提示。至少它不是直截了当的。在正常情况下,Hint被设计为仅在EditText框中没有文本时才可见,并且它具有与editText内容相同的重力。如果你想提供一个持久的“提示”,你可以尝试在editText之外的右侧附带一个TextView。
答案 2 :(得分:0)
我不确定小部件机制是否可行。 我会尝试使用在每次回调后调用的函数来管理其内容(您必须设置一个侦听器到edittext)。 尝试添加此侦听器:
textMessage = (EditText)findViewById(R.id.textMessage);
textMessage.addTextChangedListener(new TextWatcher(){
public void afterTextChanged(Editable s) {}
public void beforeTextChanged(CharSequence s, int start, int count, int after){}
public void onTextChanged(CharSequence s, int start, int before, int count){
/*here goes your function*/ }
});
然后对于函数使用解析的HTML在用户输入后给几个空格的灰色'提示'颜色。您可以使用以下公式:
String tmpHtml = "<html>a whole bunch of html stuff</html>";
String htmlTextStr = Html.fromHtml(tmpHtml).toString();
希望这可以让您了解如何实现它。
答案 3 :(得分:0)
@ Sergii,
我同意你的看法。
这里是我的带有相同XML的答案代码
private void setHintRight(final EditText et, final TextView tv) {
et.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (hasFocus == false && TextUtils.isEmpty(et.getText().toString())) {
tv.setVisibility(View.VISIBLE);
}
}
});
et.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i2, int i3) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i2, int i3) {
if (et.getText().length() == 0) {
tv.setVisibility(View.VISIBLE);
} else {
tv.setVisibility(View.GONE);
}
}
@Override
public void afterTextChanged(Editable editable) {
}
});
}
在这里,你必须传递带有左重力的edittext和带有正确重力的Textview ......