android - edittext를 한 줄로 제한


가능한 중복 : android-singleline-true-not-working-for-edittext

<EditText 
    android:id="@+id/searchbox"  
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:lines="1"
    android:scrollHorizontally="true"
    android:ellipsize="end"
    android:layout_weight="1"
    android:layout_marginTop="2dp"
    android:drawablePadding="10dp"
    android:background="@drawable/edittext"
    android:drawableLeft="@drawable/folder_full"
    android:drawableRight="@drawable/search"
    android:paddingLeft="15dp"
    android:hint="search...">
</EditText>

위의 EditText 를 단 한 줄로 만들고 싶습니다. 사용자가 "엔터"를 눌러도 커서는 두 번째 줄로 내려 가지 않아야합니다. 아무도 내가 그 일을하도록 도울 수 있습니까?



Answers


android:maxLines="1" android:inputType="text"

android : maxLines 속성을 잊어 버렸습니다. android : inputType을 참조하십시오 . 아래 예제에서이 결과를 얻을 수 있습니다.

<EditText 
    android:id="@+id/searchbox"  
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:maxLines="1"
    android:inputType="text"
    android:scrollHorizontally="true"
    android:ellipsize="end"
    android:layout_weight="1"
    android:layout_marginTop="2dp"
    android:drawablePadding="10dp"
    android:background="@drawable/edittext"
    android:drawableLeft="@drawable/folder_full"
    android:drawableRight="@drawable/search"
    android:paddingLeft="15dp"
    android:hint="search...">
</EditText>



android:singleLine="true" 사용 android:singleLine="true" 는 더 이상 사용되지 않습니다.

입력 유형을 추가하고 maxline을 1로 설정하면 모든 것이 잘 작동합니다.

android:inputType="text"
android:maxLines="1"



android:singleLine 은 이제 더 이상 사용되지 않습니다. 문서에서 :

이 상수는 API 수준 3에서 사용되지 않습니다.

이 속성은 더 이상 사용되지 않습니다. 대신에 maxLines 를 사용하여 정적 텍스트의 레이아웃을 변경하고 편집 가능한 텍스트보기 대신 inputType 속성의 textMultiLine 플래그를 사용하십시오 (singleLine 및 inputType이 모두 제공되면 inputType 플래그가 singleLine의 값을 대체합니다).

따라서 android:inputType="textEmailSubject" 또는 필드의 내용과 일치하는 다른 값을 설정할 수 있습니다.




이 줄을 xml의 EditText에 추가해야합니다 :

android:maxLines="1"



android:maxLines="1"
android:inputType="text"

위 코드를 추가하여 레이아웃의 EditText 태그에 한 줄을 추가하십시오.

android:singleLine="true" is deprecated

이 상수는 API 수준 3 에서 사용되지 않습니다 .

이 속성은 더 이상 사용되지 않습니다. 대신에 maxLines를 사용하여 정적 텍스트의 레이아웃을 변경하고 편집 가능한 텍스트보기 대신 inputType 속성의 textMultiLine 플래그를 사용하십시오 (singleLine 및 inputType이 모두 제공되면 inputType 플래그가 singleLine의 값을 대체합니다).




이제 android:singleLine 속성은 더 이상 사용되지 않습니다. 이러한 속성을 EditText 에 추가하여 EditText 가 단일 행이되도록하십시오.

android:inputType="text"
android:imeOptions="actionNext"
android:maxLines="1"



나는 과거에 android:singleLine="true" 를 사용하고 "enter"키의 리스너를 추가했다.

((EditText)this.findViewById(R.id.mytext)).setOnKeyListener(new OnKeyListener() {

    public boolean onKey(View v, int keyCode, KeyEvent event) {

        if (event.getAction() == KeyEvent.ACTION_DOWN && keyCode == KeyEvent.KEYCODE_ENTER) {
            //if the enter key was pressed, then hide the keyboard and do whatever needs doing.
            InputMethodManager imm = (InputMethodManager)context.getSystemService(Context.INPUT_METHOD_SERVICE);
            imm.hideSoftInputFromWindow(getApplicationWindowToken(), 0);

            //do what you need on your enter key press here

            return true;
        }

        return false;
    }
});



android:singleLine="true" 포함 android:singleLine="true"




한 사람이 EditText의 setMaxLines 메소드를 호출하는 것을 제외하고 모든 사람들이 XML 방식을 보여줍니다. 그러나, 내가 그것을했을 때, 그것은 작동하지 않았다. 나를 위해 일한 한 가지는 입력 유형을 설정하는 것이 었습니다.

EditText editText = new EditText(this);
editText.setInputType(InputType.TYPE_CLASS_TEXT);

이것은 AZ, az, 0-9 및 특수 문자를 허용하지만 입력을 허용하지 않습니다. Enter 키를 누르면 응용 프로그램에서 적용 가능한 경우 다음 GUI 구성 요소로 이동합니다.

해당 EditText에 넣을 수있는 최대 문자 수를 설정하거나 화면 오른쪽에있는 내용을 누르거나 화면 자체에서 벗어나 시작할 수 있습니다. 다음과 같이 할 수 있습니다.

InputFilter[] filters = new InputFilter[1];
filters[0] = new InputFilter.LengthFilter(8);
editText.setFilters(filters);

그러면 EditText에서 최대 문자 수를 8로 설정합니다. 이 모든 것이 당신을 돕길 바랍니다.




이것은 EditText에서 작동합니다 :

android:inputType="text"

그런 다음 입력 텍스트의 최대 길이를 설정합니다.

android:maxLength="<int>"

그것들은 지금 필요한 2 가지입니다.




제한하기 위해 "true"에 단일 행 옵션을 설정하면됩니다.

android:singleLine="true"



용도

android:ellipsize="end"
android:maxLines="1"



코드 대신 코드 아래에서 사용

<EditText 
    android:id="@+id/searchbox"  
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:lines="1"
    android:singleLine="true"
    android:scrollHorizontally="true"
    android:ellipsize="end"
    android:layout_weight="1"
    android:layout_marginTop="2dp"
    android:drawablePadding="10dp"
    android:background="@drawable/edittext"
    android:drawableLeft="@drawable/folder_full"
    android:drawableRight="@drawable/search"
    android:paddingLeft="15dp"
    android:hint="search..."/>



@Aleks G OnKeyListener ()는 잘 작동하지만 MainActivity에서 실행하여 약간 수정해야했습니다.

EditText searchBox = (EditText) findViewById(R.id.searchbox);
searchBox.setOnKeyListener(new OnKeyListener() {

    public boolean onKey(View v, int keyCode, KeyEvent event) {

        if (event.getAction() == KeyEvent.ACTION_DOWN && keyCode == KeyEvent.KEYCODE_ENTER) {
            //if the enter key was pressed, then hide the keyboard and do whatever needs doing.
            InputMethodManager imm = (InputMethodManager) MainActivity.this.getSystemService(Context.INPUT_METHOD_SERVICE);
            imm.hideSoftInputFromWindow(searchBox.getApplicationWindowToken(), 0);

            //do what you need on your enter key press here

            return true;
        }

        return false;
    }
});

나는 이것이 동일한 것을하는 것을 시도해 누군가를 원한다는 것을 희망한다.




또한 android : inputType 속성이 textMultiLine 인 경우주의를 기울이는 것이 중요합니다. 그렇다면 android : singleLine, android : imeOptions, android : ellipsize and android maxLines 속성은 무시되고 EditText는 다중 행을 허용합니다.




edittext에이 줄을 추가하십시오.

android : inputType = "text"




프로그래밍 방식 :

textView.setMaxLines(1);



as android:singleLine="true" 는 이제 감가 상각 됩니다.

android : maxLines = "1"

대신에 maxLines를 사용하여 정적 텍스트의 레이아웃을 변경하고 편집 가능한 텍스트보기 대신 inputType 속성의 textMultiLine 플래그를 사용하십시오 (singleLine 및 inputType이 모두 제공되면 inputType 플래그가 singleLine의 값을 대체합니다).




XML 파일에서 텍스트 편집에이 특성을 추가하십시오

 android:maxLines="1"



android:imeOptions="actionDone"

나를 위해 일했다.