我正在创建一个电子邮件表单,并希望在EditText中包含无法删除的文本。在下面的屏幕截图中,无法删除To
。
如果有人就如何实现上述目标提出建议,那就太棒了 - 谢谢。
我To
EditText框的当前代码:
<EditText
android:id="@+id/editText2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="5dp"
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp"
android:layout_marginTop="0dp"
android:hint="@string/email_to" >
</EditText>
当用户开始发短信时,问题是android:hint
文字消失,用户可以删除android:text
。
我们如何拥有无法删除的文字?感谢。
另外,我想请注意,我有一个方法,使用一个清除按钮清除文本 - 这工作正常 - 但我希望它不会删除固定的文本(如果我实现了!)..这里这是代码:
private void clearForm(ViewGroup group)
{
for (int i = 0, count = group.getChildCount(); i < count; ++i) {
View view = group.getChildAt(i);
if (view instanceof EditText) {
((EditText)view).setText("");
}
if(view instanceof ViewGroup && (((ViewGroup)view).getChildCount() > 0))
clearForm((ViewGroup)view);
}
}
管理一种迂回的方式。我在嵌套的线性布局中创建了一个TextView和EditText。我使用android:background="#00000000"
关闭了EditText中的边框。
我在drawable
文件夹中创建了一个xml文件,并在相关的线性布局中引用了这个文件:android:background="@drawable/customxml"
答案 0 :(得分:2)
要获得所需的视觉效果,请包含一个包含文本视图和EditView的水平LinearLayout。关闭EditView周围的边框(有一个属性可以做到这一点(我认为它是android:shadowColor))使用边距和填充来使它们彼此相邻。在线性布局上设置背景颜色,以在组合对周围放置边框。
我不担心效率。你没有深深地筑巢。最大的挑战是让它看起来像一个单一的视图。
编辑:另一个想法。如果这不起作用,你可以使“To”成为drawable,并使用android:drawableLeft属性设置它。答案 1 :(得分:0)
您可以使用Text Watcher侦听器来执行此操作。 您可以通过检查edittext的长度来保留edittext中的文本。
例如 editText.setText(&#34; To&#34;)//意思是长度为2
并且在afterTextChanged方法中,检查editText中的文本是否已被删除(在editText中检查文本长度)
这是完整的示例代码:
editText.setText("To");
editText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
if(s.length < 2){
editText.setText("To")//set editext with "To" again like has been initialized
editText.setSelection(editText.getText().length)// to make cursor in end of text
}
}
});
希望这有帮助!快乐的编码:)
答案 2 :(得分:-1)
使用水平方向将LinearView添加到LinearLayout的EditText的右侧,或者使用android:layout_toRightOf =“@ id / YourTextView”
将RelativeLayout添加到RelativeLayout