텍스트 편집 상자를 "오버"하는 방법은 무엇입니까?
-
19-08-2019 - |
문제
초상화의 기본 레이아웃 (초상화로 고정)이있는 응용 프로그램이 있으며 텍스트를 입력 할 곳이 하나 있습니다. 배경 이미지가 안개가 켜진 상태에서 조경 방향으로 팝업 창처럼 시작하고 싶습니다. 팝업 위젯이 있다는 것을 알고 있지만 텍스트 편집 상자를 회전하기위한 아이디어는 좋을 것입니다. 키보드 슬라이드에 텍스트 상자가있는 새 화면이 표시되는 것처럼 키보드가 미끄러질 때 세로보기 (텍스트 상자 만)로 회전하면 작동합니다.
해결책
문제에 대한 가장 쉬운 해결책은 EditText
별도의 dialog
메인 (초상화 고정) 활동 내에서 시작된 테마 활동.
EditText 활동에는 방향이 고정되어 있지 않아야하므로 키보드를 밀 때 예상대로 회전합니다.
텍스트 입력 활동 생성
새 활동을 만듭니다. edittext 뷰와 포함하려는 다른 내용 만 포함됩니다 (아마도 OK / 취소 버튼 및 레이블이 있습니까?). 매니페스트 내에서 테마를 설정했습니다 Theme.Dialog
.
<activity android:name="TextEntryActivity"
android:label="My Activity"
android:theme="@android:style/Theme.Dialog"/>
코그 라운드 활동의 창 속성 (텍스트 입력 대화 상자)의 창 속성을 수정하여 대화 상자 뒤의 활동을 포기하거나 흐리게합니다. 그 안에는 onecreate 메소드 사용입니다 getWindow().setFlags
모든 배경 활동에 흐릿함을 적용합니다.
getWindow().setFlags(WindowManager.LayoutParams.FLAG_BLUR_BEHIND,
WindowManager.LayoutParams.FLAG_BLUR_BEHIND);
텍스트 입력 활동에서 입력 된 값을 시작하고 읽기
사용 startActivityForResult
텍스트 입력 활동을 시작합니다. 그 활동 내에서 setResult
다음에 설명 된 기술을 사용하여 반환 된 의도 내에 입력 한 텍스트 문자열을 반환합니다. 이 게시물.
무시하십시오 onActivityResult
하위 활동에서 결과를 듣는 방법.
키보드에서의 트리거 런치 노출
원할 때마다 텍스트 입력 활동을 시작할 수 있지만 키보드가 노출 될 때 항상 표시하려면이 이벤트를 설명 할 수 있습니다.
추가하여 시작하십시오 android:configChanges
초상화 활동의 매니페스트 항목에 속합니다. 듣기 위해 등록해야합니다 keyboardHidden
.
android:configChanges="keyboardHidden"
그 활동 내에서 무시하십시오 onConfigurationChanged
텍스트 입력 활동을 시작합니다.
@Override
public void onConfigurationChanged(Configuration newConfig) {
Intent i = new Intent(this,TextEntryActivity.class);
startActivityForResult(i, STATIC_INTEGER_VALUE);
}
텍스트 입력 활동을 시작하기 전에 Keyb
키보드가 숨겨져있을 때 동일한 기술을 사용하여 텍스트 입력 활동에서 자동으로 돌아갈 수도 있습니다.