以编程方式使用属性singleLine = true创建editText

时间:2014-09-01 10:37:52

标签: android android-edittext focus

我只需要在EditText具有焦点时将一个EditText限制在1行,但是当它具有焦点时它不会做任何事情,只有当它具有焦点并且我关闭应用程序时才有效。我不知道为什么会发生这种情况,我尝试了一些方法来解决它,但我做不到。这是我的代码:

if(myText.isFocused()){
        myText.setSingleLine(true);
        myText.setMaxLines(1);
        myText.setLines(1);
}

编辑: 经过讨论,这就是我的理解:

当editText的属性放入onCreate方法时,Activity会中断。

主要对象:以编程方式使用属性singleLine = true创建editText。

3 个答案:

答案 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" />