Android EditText-具有无法删除的默认文本,并在离开EditText后使用背景覆盖文本
我正在创建一个电子邮件表单,希望在EditText中包含无法删除的文本。在下面的屏幕截图上,无法删除Android EditText-具有无法删除的默认文本,并在离开EditText后使用背景覆盖文本,android,android-edittext,Android,Android Edittext,我正在创建一个电子邮件表单,希望在EditText中包含无法删除的文本。在下面的屏幕截图上,无法删除至 如果有人对如何实现上述目标提出建议,那就太好了——谢谢 至编辑文本框的我的当前代码: <EditText android:id="@+id/editText2" android:layout_width="match_parent" android:layout_height="wrap_content"
至
如果有人对如何实现上述目标提出建议,那就太好了——谢谢
至
编辑文本框的我的当前代码:
<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>
解决方案:
设法以迂回的方式做到这一点。。我在嵌套的线性布局中创建了TextView和EditText。我使用
android:background=“#00000000”
关闭了编辑文本中的边框
我在
drawable
文件夹中创建了一个xml文件,并在相关的线性布局中引用了它:android:background=“@drawable/customxml”
要获得所需的视觉外观,请包括一个包含文本视图和编辑视图的水平线性布局。关闭EditView周围的边框(有一个属性可以做到这一点(我想它是android:shadowColor)),通过边距和填充使它们彼此相邻。在线性布局上设置背景色,以在组合对周围放置边框
我不会太担心效率。你的窝不是很深。最大的挑战是让它看起来像一个单一的视图
编辑:另一个想法。如果不起作用,您可以将“To”设置为可绘制,并使用android:drawableLeft属性进行设置。使用android:layout\u toRightOf=“@id/YourTextView”将文本视图添加到具有水平方向或相对性的线性布局中的EditText的右侧。 通过检查edittext的长度,可以在edittext中保留文本 比如说 editText.setText(“To”)//表示长度为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
}
}
});
editText.setText(“To”);
editText.addTextChangedListener(新的TextWatcher(){
@凌驾
更改前文本之前的公共void(字符序列s、int start、int count、int after){
}
@凌驾
public void onTextChanged(字符序列、int start、int before、int count){
}
@凌驾
公共无效后文本已更改(可编辑){
如果(s.长度<2){
editText.setText(“To”)//再次将editText设置为“To”,如已初始化
editText.setSelection(editText.getText().length)//使光标位于文本末尾
}
}
});
希望这有帮助!快乐编码:)您有什么理由需要存储“to”吗在EditText本身中,而不是在EditText旁边的另一个视图中?@DaleWilson没有特别的需要-但我认为在EditText本身中使用会更好…我将再次尝试使用单独的TextView来创建sure@DaleWilson当我有一个单独的文本视图时,它不会共享EditText的格式化下边框——尽管我会这样做调查如何共享此边界。我还认为将它放在同一个盒子里会比嵌套另一个线性布局使盒子并排更有效。。无法使用
android:shadowColor
关闭边框,但android:background=“#00000000”
工作正常。我在drawable
文件夹中创建了一个xml文件,并在相关的线性布局中引用该文件,如下所示:android:background=“@drawable/customxml”
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
}
}
});