Android:Edit_Text多行但不是提示

时间:2017-05-02 19:51:07

标签: android android-edittext

只想问你是否可以做到

  android:inputType="textMultiLine" & android:maxLines="5"

提示

  android:maxLines="1" 

由于尺寸较小

由于本地化,文本可能会更长。

谢谢:)

2 个答案:

答案 0 :(得分:0)

是的,但可能是作弊。

首先,将maxLine设置为1.想法是在提示消失时将maxLine设置为5。使用setOnFocusChangeListener

重点关注EditText时,您可以知道它

设置setOnFocusChangeListener喜欢它:

    EditText ed = (EditText)findViewById(R.id.MY_EDIT_TEXT);
    ed.setOnFocusChangeListener(new View.OnFocusChangeListener() {
        @Override
        public void onFocusChange(View view, boolean isFocused) {
            if (isFocused)
                ((EditText)view).setMaxLines(5);
            else
                ((EditText)view).setMaxLines(1);
        }
    });

祝你好运

修改

我认为当焦点在它上面时,提示会消失,但只有在添加文本时,提示才会消失。

解决此问题的新解决方案是在EditText的包含上添加一个侦听器。坏点(如果是)是你必须使你的EditText最终。

    final EditText ed = (EditText)findViewById(R.id.MY_EDIT_TEXT);
    ed.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) {
            if (count == 0)
                ed.setMaxLines(1);
            else
                ed.setMaxLines(5);
        }

        @Override
        public void afterTextChanged(Editable s) {

        }
    });

答案 1 :(得分:0)

@ClémentChameyrat是一个很好的答案,您可以通过检查editeText的文本是否为空来改进他的第一个答案。 如果显示提示,则getText()不会返回anythig,因此请在代码中使用此事实以确定何时显示提示 :

  EditText ed = (EditText)findViewById(R.id.MY_EDIT_TEXT);
    ed.setOnFocusChangeListener(new View.OnFocusChangeListener() {
        @Override
        public void onFocusChange(View view, boolean isFocused) {
            String text = ((EditText)view).getText().toString();
            if (isFocused && !text.equals(''))
                ((EditText)view).setMaxLines(5);
            else if (!isFocused && text.equals(''))
                ((EditText)view).setMaxLines(1);
        }
    });