windowSoftInputMode
각 탭에 대해 다른 속성 을 갖도록 탭을 작동하고 싶습니다 . 탭의 모든 처리가 하나의 단일 활동에서 수행 될 때 Java 클래스에서이 속성에 액세스하는 방법은 무엇입니까?
Java 코드에서이 매니페스트 속성에 액세스하는 방법이 있습니까?
답변:
활동에 대한 softInputMode를 변경하려면 다음을 사용하십시오.
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
다음을 사용하여 EditText의 softInput 유형을 변경하십시오.
mEditText.setImeOptions(EditorInfo.IME_ACTION_DONE);
수정을 위해 @Eliezer에게 감사드립니다.
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
나는 이미 그것을 테스트, 정말 작동
Window#setSoftInputMode
되어WindowManager.LayoutParams.SOFT_INPUT_*
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_NOTHING);
하지만 키보드는 여전히 다른 뷰 위에있는 내 FrameLayout을 밀어 붙인다. 그러나 다른 견해가 그대로 남아 있습니다. 매니페스트에 추가하면 작동하지만 전체 활동에 적용하고 싶지 않습니다.
Prasham의 의견 에 따르면 나는 이것을했고 그 덕분에 내 생명을 구했습니다! EditText
와 SoftWindowInput
당신이 가진 레이아웃이있을 때 모드는 매우 버그가 ScrollView
당신은 동적으로 작성된다.
이 게시물을 읽었지만 Prashan의 답변과 같은 다른 답변 / 댓글을 계속 읽었으므로 새 게시물에 작성하기로 결정했습니다.
내가 사용한 코드 아래 ScrollView
:
Activity.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
탭에 두 가지 모드를 사용하는 것을 목표로합니다. 모드는 SOFT_INPUT_ADJUST_RESIZE
및 SOFT_INPUT_ADJUST_NOTHING
입니다.
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
위의 코드 줄은 그 자체로는 작동하지 않습니다. 앱은 항상 상태에서 작동합니다 ADJUST_NOTHING
. 단, AndroidManifest.xml 파일의 태그에를 windowSoftInputMode="adjustResize"
삽입하면 <activity>
기본적으로 앱 창의 크기가 조정됩니다. 또한 다음 전화를 걸 때
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_NOTHING);
예상대로 작동하고 크기가 조정되지 않습니다.
답변에 대한 PS 개선
windowSoftInputMode="adjustResize"
매니페스트에서 설정 하면 나중에이 플래그를 처리하는 데 도움이됩니다. 특히 단일 활동에 대부분 조각이있는 시나리오에서. 따라서 프로그래밍 방식으로 SOFT_INPUT_ADJUST_RESIZE
다시 SOFT_INPUT_ADJUST_NOTHING
주문형으로 전환하여 활동의 입력 상태를 동적으로 계속 변경할 수 있습니다 . 잘 했어!
adjustPan
하고adjustResize
당신은 갈 수WindowManager.LayoutParams
당신이 사용할 수있는 많은 유용한 상수 찾을 수 있습니다, 수업setSoftInputMode
방법