Android如何使用单行输入和多行提示创建编辑文本

时间:2015-08-05 12:33:23

标签: android android-edittext

我希望创建一个带有3-4行提示的编辑文本,点击该提示,允许用户只输入一行文本。 我试过用

android:singleLine = "true"

但这也限制了暗示的长度。

如何为两者分配不同数量的行?

谢谢

3 个答案:

答案 0 :(得分:1)

您可以在编辑文本中添加TextWatcher并比较文本的长度。 如果为0,则显示提示,并以编程方式设置editText.setSingleLine(false)。如果它大于0,则使用setSingleLine(true)限制editText。

伪代码:

    public void some(){
    final EditText t = findViewById(someName);
    t.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) {
            t.setSingleLine(t.getText().toString().length() > 0);
        }
    });
}

答案 1 :(得分:0)

试试这个:

<EditText
        android:id="@+id/editText1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:maxLines="1"
        android:hint="your hint here your hint here your hint here your hint here  your hint here your hint here your hint here your hint here your hint here your hint here "
        android:ems="10" >

        <requestFocus />
    </EditText>

答案 2 :(得分:0)

以编程方式设置textview属性:

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);
    }
   else if(myText.matches(""))
   {
      myText.setSingleLine(false);
   }
 }
});