我只需要在EditText具有焦点时将一个EditText限制在1行,但是当它具有焦点时它不会做任何事情,只有当它具有焦点并且我关闭应用程序时才有效。我不知道为什么会发生这种情况,我尝试了一些方法来解决它,但我做不到。这是我的代码:
if(myText.isFocused()){
myText.setSingleLine(true);
myText.setMaxLines(1);
myText.setLines(1);
}
编辑: 经过讨论,这就是我的理解:
当editText的属性放入onCreate方法时,Activity会中断。
主要对象:以编程方式使用属性singleLine = true创建editText。
答案 0 :(得分:2)
尝试在您的编辑文字上设置onFocusChangeListener
。
myText.setOnFocusChangeListener(new OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
// TODO Auto-generated method stub
if(hasFocus){
myText.setSingleLine(true);
myText.setMaxLines(1);
myText.setLines(1);
}
}
});
您的代码无法收听所有焦点更改。它只会检查一次。希望这会有所帮助。
为了保留edittext singleLine而不考虑焦点,将其放在onCreate
之后的setContentView
中:
myText = (EditText) findViewById(R.id.ed);
myText.setSingleLine(true);
答案 1 :(得分:0)
<强> EDITED 强>
为xml布局添加参数id android:id =“@ + id / first_layout”:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/first_layout"
android:layout_width="match_parent"
android:layout_height="match_parent" >
</RelativeLayout>
然后在onCreate或任何地方:
public class Test extends Activity {
private RelativeLayout mRlayout;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.first_layout);
mRlayout = (RelativeLayout) findViewById(R.id.first_layout); // use the id here
EditText myEditText = getEditText();
mRlayout.addView(myEditText);
}
private EditText getEditText(){
EditText lEditText= new EditText(Test.this); // Pass it an Activity or Context
lEditText.setLayoutParams(new RelativeLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));
lEditText.setSingleLine(true);
return lEditText;
}
}
如果您想要创建editText,请调用 getEditText(),如果您还定义了editText的所有其他必要属性
答案 2 :(得分:0)
<EditText
android:id="@+id/edt_email"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:maxLength="Enter Your text limit like 10"
android:padding="8dp"
android:singleLine="true"
android:textSize="15dp" />