IT story

가로로 소프트 키보드 입력을위한 전체 화면 편집보기를 비활성화 하시겠습니까?

hot-time 2020. 4. 22. 08:14
반응형

가로로 소프트 키보드 입력을위한 전체 화면 편집보기를 비활성화 하시겠습니까?


소프트 키보드를 사용하는 Android 기기에서는 가로 모드 일 때 전체 화면 키보드 편집보기 (아래 그림 참조)가 표시되지 않도록하고 싶습니다 (즉, 소프트 키보드 자체와 그 뒤에있는보기 만보고 싶습니다).

setExtractViewShown(false)on 메소드를 사용 하여이 작업을 수행 할 수 있다고 가정 InputMethodService하지만 기본 인스턴스에 액세스 할 수 없으며 사용자 정의 입력 메소드를 구현하고 싶지 않습니다.

Android 전체 화면 편집보기

추가 편집 : 입력이 진행되는보기는 TextView( View사용자 정의 InputConnection구현이 아님) android:imeOptions="flagNoExtractUi"이 아니므로 여기서 작동하지 않습니다.


나는 마침내 내 자신의 질문에 대답했다.

입력 UI가 연결된 지점에서 추출 UI (즉, 전체 화면 편집 모드)를 비활성화 할 수 있습니다.

@Override
public InputConnection onCreateInputConnection(EditorInfo outAttrs) {

    outAttrs.imeOptions = EditorInfo.IME_FLAG_NO_EXTRACT_UI;

    // etc.
}

그렇게하려면 activity xml로 이동 android:imeOptions="flagNoExtractUi"하여 코드를 붙여 넣으 십시오. 그러나 어디에 붙여 넣어야합니까? 액티비티 XML 예제 코드를보고 EditText를 살펴보십시오.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"         
    >

    <EditText
        android:imeOptions="flagNoExtractUi"
        android:id="@+id/etTextInAct"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:ems="10" >   
        <requestFocus />
    </EditText>

</LinearLayout>

키보드에 대한 추가 사용자 정의 옵션을 원하면 http://developer.android.com/guide/topics/ui/controls/text.html을 참조 하십시오.


부동산 추가 android:imeOptions="flagNoExtractUi"각을 EditText당신의 XML파일.


위의 답변은 동적으로 추가 된 EditTexts에 대한 솔루션을 찾는 데 도움이되었습니다.

editText.setImeOptions(EditorInfo.IME_FLAG_NO_EXTRACT_UI);

android:imeOptions="flagNoFullscreen"해당 기능을 달성하는 데 사용하십시오 .


또한 여러 imeOptions를 프로그래밍 방식으로 결합하려면 | 통사론.

예를 들어 가로에서 전체 화면 편집보기를 비활성화하고 키보드에서 "Next"키를 "OK"(ACTION_DONE)로 바꾸려면 다음을 사용할 수 있습니다.

editText.setImeOptions(EditorInfo.IME_ACTION_DONE | EditorInfo.IME_FLAG_NO_EXTRACT_UI);

IME를 직접 수정하는 경우 다음을 재정 의하여 IME가 ExtractedView를 표시하지 않도록 할 수 있습니다 onUpdateExtractingVisibility.

@Override
public void onUpdateExtractingVisibility(EditorInfo ei) {
    ei.imeOptions |= EditorInfo.IME_FLAG_NO_EXTRACT_UI;
    super.onUpdateExtractingVisibility(ei);
}

나는 늦게 조금 알고 있지만, 여전히 관심이 누군가를 위해, 여기 내 솔루션입니다 : 내 경우에는 내가 풍경이 있었다 활동 포함 글고을 그것의 상단을 나는이 검색에 자동 완성 기능을 구현하는 데 필요한 활동 , 이는 중복을 키보드로 인해 사용자가 RecyclerView의 결과를 볼 수없는 문제가 발생했습니다 . 그래서 레이아웃 에이 EditText가 생겼 습니다 .

<EditText
  android:layout_width="match_parent"
  android:layout_height="?actionBarSize"
  android:id="@+id/main_search_et"
  android:imeOptions="actionSearch|flagNoExtractUi"
  android:inputType="text"  />

건배!


당신이 사용할 수있는 :

android:imeOptions="flagNoFullscreen" 

편집 텍스트에서


내 해결책 :

android:imeOptions="flagNoExtractUi|flagNoFullscreen"

소프트 키보드를 숨기고 검색보기에서 포커스를 지우려면 전화를 걸 수 있습니다.

public void hideKeyboard(View view) {
    InputMethodManager imm = (InputMethodManager) view.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
    imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
}

super.clearFocus();

참고 URL : https://stackoverflow.com/questions/4336762/disabling-the-fullscreen-editing-view-for-soft-keyboard-input-in-landscape

반응형