programing

가로 세로에서 소프트 키보드 입력에 대해 전체 화면 편집 보기를 비활성화하시겠습니까?

lastcode 2023. 10. 14. 10:17
반응형

가로 세로에서 소프트 키보드 입력에 대해 전체 화면 편집 보기를 비활성화하시겠습니까?

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

이것은 다음을 사용하여 달성할 수 있다고 가정합니다.setExtractViewShown(false)메소드 온InputMethodService, 그러나 이 인스턴스의 기본 인스턴스에 액세스할 수 없으므로 사용자 지정 입력 방법을 구현하고 싶지 않습니다.

Android fullscreen editing view

Edited to add: 입력이 진행되는 뷰가 아닙니다.TextView(그것은 a.View관례에 따라InputConnection실행), 그래서.android:imeOptions="flagNoExtractUi"여기선 안 될 겁니다

저는 마침내 제 자신의 질문에 답했습니다.

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

@Override
public InputConnection onCreateInputConnection(EditorInfo outAttrs) {

    outAttrs.imeOptions = EditorInfo.IME_FLAG_NO_EXTRACT_UI;

    // etc.
}

이렇게 하려면 활동 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를 프로그래밍 방식으로 결합하려면 | 구문을 사용할 수 있습니다.

예를 들어 가로 보기에서 전체 화면 편집 보기를 사용 불가능으로 설정하고 키보드에서 "다음" 키를 "확인"(ACTION_DONE)으로 바꾸기 위해 다음을 사용할 수 있습니다.

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

내 솔루션:

android:imeOptions="flagNoExtractUi|flagNoFullscreen"

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

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

조금 늦었다는 것을 알지만 여전히 관심이 있는 모든 사람들을 위해 다음과 같은 해결책이 있습니다. 제 경우에는 텍스트 편집이 포함된 풍경 작업이 맨 위에 있었고 이 검색 작업에 자동 완성 기능을 구현해야 했는데, 이로 인해 키보드가 겹쳐져 사용자가 리사이클러뷰의 결과를 볼 수 없는 문제가 발생했습니다.그래서 저는 이 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" 

당신의 편집본

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

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

반응형