12

내 활동은 안드로이드가 소프트 키보드는벌집 (3.1) adjustResize가 더 이상 작동하지 않습니까? windowSoftInputMode = "adjustResize"안드로이드 2.1에 따라 동작 :

Keyboard behavior in 2.1 (good)

그러나,에

Before soft keyboard appears

키보드가 나타납니다

하기 전에 Honeycomb 소프트 키보드는 내 레이아웃의 크기를 조정하지 않고 대신 버튼을 덮습니다 :

인치 갤럭시 탭과 모토로라 줌 모두 6,

Keyboard behavior in Honeycomb (bad)

같은 행동.

레이아웃을 여러 번 수정하여 허니컴과 호환되도록 만들었습니다. 아무 소용이 없었습니다. 소프트 키보드는 EditText보기를 밀어 올리지 만 버튼은 표시하지 않습니다.

Here is a simple app project demonstrating the problem.

편집 : 링크 고정. 사용

레이아웃 :

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 
    <LinearLayout 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:gravity="center_horizontal" 
     android:layout_alignParentBottom="true"> 
     <Button 
      android:id="@+id/save" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="Save" /> 
     <Button 
      android:id="@+id/cancel" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="Cancel" /> 
    </LinearLayout> 
    <ScrollView 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignParentTop="true"> 
     <EditText 
      android:layout_height="wrap_content" 
      android:layout_width="fill_parent" /> 
    </ScrollView> 
</RelativeLayout> 

내가 찾은 유일한 관련 문제가 this이지만, 비활성화 하드웨어 가속이 나에게 영향을 미치지 아니합니다. 나는 또한 Android guide on making your app compatible with input methods을 읽었지만 거기에는 어떤 해결책도 인식하지 못했습니다.

나는 분명히 잘못된 것을하고 있습니까? 아니면이 사람이 더 많은 정보를 가지고있는 버그입니까?

+0

가능성 있음 : Scrollview 높이를 fill_parent로 설정하면 Honeycomb에서 스크롤 막대가 겹쳐서 포커스를 잃어 버리기 때문에 버튼을 클릭 할 수 없게됩니다. 하지만 2.1의 경우는 아닙니다. –

+0

'android : windowSoftInputMode'를 사용하거나 사용하지 않은 상태에서 3.1의 에뮬레이터에서 제대로 작동하는 것 같습니다. 내가 한 모든 것은 새로운 프로젝트를 생성하고 main.xml을 레이아웃으로 대체하는 것입니다. 샘플 프로젝트를 다운로드 할 수 없었습니다. –

+0

@ Nicklas Odd, 에뮬레이터에서 3.1과 2.1 모두에 문제가 있음을 알았습니다. 소프트 키보드가 버튼을 덮고 있습니다. 나는 그 링크를 바로 잡았다. –

답변

14

안녕하세요. 코드를 확인했습니다.

"AndroidManifest"에서 아래 행을 삭제하십시오.XML "다음

android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen" 

하고 다음 화면 크기를 조정 체크

어떤 쿼리가 PLZ 알려 경우 활동이 전체 화면 모드에있을 때 여기에 추적으로

+0

당신 말이 맞아요 - 그 테마는 3.1에서 크기를 바꾸지 않습니다! 왜 그렇게 될까요? 이제 대체 전체 화면 솔루션을 찾아 보겠습니다. 팁을 주셔서 너무 감사드립니다! –

+0

나는 그것이 허니 콤에서 깨지는 테마의 전체 화면 부분이라는 것을 확인했다. 허니컴 앱은 모두 "전체 화면"이라는 점에서 의미가있다. 그럼에도 불구하고 나는 2.1을 목표로하고 있기 때문에 그 설정이 필요합니다. Honeycomb은 거기에 하위 호환성이 부족한 것처럼 보입니다. 기회가 생기면 버그 리포트를 제출할 수도 있습니다. 다시 한 번 감사드립니다! –

+0

네이선,이 버그 보고서를 제출 했습니까? –

3

adjustResize 모드는 확실히 작동합니다. UI 전체에서 작동하는 것을 볼 수 있습니다.

그래서 질문입니다. 왜 앱에 설정되어 있지 않습니까?

우선 "adb shell dumpsys window"를 사용하면 WindowManager.LayoutParams로 설정된 소프트 입력 모드가 포함될 창의 정보를 볼 수 있습니다. 거기에 인쇄 된 값은 원시 번호입니다. 의미를 찾으려면 여기를보십시오.

윈도우에 실제로 adjustResize가없는 경우, 왜 파고 들어가서 왜 설정되지 않는지 확인해야합니다. 그 밖의 모든 것이 정상적입니다. 활동 모드로 설정하면 창과 같이 항상 설정됩니다. 당신은 당신이하고있는 다른 것을 찾고 싶을 것입니다. 그것은 당신의 창에서 변화를 일으키는 것입니다.

윈도우에 adjustResize가 선택된 경우, 어떤 이유로보기 계층 구조가 실제로 크기 조정되지 않습니다. 플랫폼에서이 기능이 작동하지 않을 수도있는 주요 차이점이 없습니다 (재고 UI의 다른 곳에서 작동하는 것을 볼 수 있습니다). 여기서 내가하는 첫 번째 일은 HierarchyViewer를 사용하여 뷰 계층 구조에서 어떤 일이 일어나는지 확인하는 것입니다.

+0

고마워요 - 플래그가 창 덤프에 설정되어 있지 않은 것 같습니다. 문제를 찾아 내기 위해 노력하고 있습니다 ... –

+0

Dianne, 왜 Theme가 그 깃발을 사용할 수 없게하는지 우리에게 말할 수 있습니까? – nmr

관련 문제