소프트웨어 키보드가 나타날 때마다 배경 이미지의 크기가 조정됩니다. 아래 스크린 샷을 참조하십시오 :
보시다시피, 배경은 일종의 압착입니다. 누구나 배경의 크기를 조정하는 이유를 밝힐 수 있습니까?
내 레이아웃은 다음과 같습니다.
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/page_bg"
android:isScrollContainer="false"
>
<LinearLayout android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_width="fill_parent"
>
<EditText android:id="@+id/CatName"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:inputType="textCapSentences"
android:lines="1"
/>
<Button android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/save"
android:onClick="saveCat"
/>
</LinearLayout>
<ImageButton
android:id="@+id/add_totalk"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:background="@null"
android:src="@drawable/add_small"
android:scaleType="center"
android:onClick="createToTalk"
android:layout_marginTop="5dp"
/>
</LinearLayout>
답변
확인을 사용하여 수정했습니다.
android:windowSoftInputMode="stateVisible|adjustPan"
파일의 <Activity >
태그 내부 항목 manifest
. 액티비티 내부에 ScrollView가 있기 때문에 발생했다고 생각합니다.
답변
배경 이미지가있는 채팅 앱, 채팅 화면을 개발하는 동안 동일한 문제에 직면했습니다. android:windowSoftInputMode="adjustResize"
소프트 키보드가 표시된 후 사용 가능한 공간에 맞게 배경 이미지를 꽉 쥐고 “adjustPan”이 전체 레이아웃을 위로 이동하여 소프트 키보드를 조정했습니다. 이 문제에 대한 해결책은 활동 XML 내부의 레이아웃 배경 대신 창 배경을 설정하는 것이 었습니다. getWindow().setBackgroundDrawable()
활동에 사용하십시오 .
답변
이러한 종류의 문제를 피하는 가장 좋은 해결책은 다음과 같습니다.
1 단계 : 스타일 만들기
<style name="ChatBackground" parent="AppBaseTheme">
<item name="android:windowBackground">@drawable/bg_chat</item>
</style>
2 단계 :AndroidManifest
파일 에서 활동 스타일 설정
<activity
android:name=".Chat"
android:screenOrientation="portrait"
android:theme="@style/ChatBackground" >
답변
android : windowSoftInputMode = “adjustPan”을 통해 전체 화면이 맨 위로 이동하기 때문에 나쁜 사용자 경험을 제공하므로 다음은 가장 좋은 답변 중 하나입니다.
나는 같은 문제가 있지만 그 후에 @Gem에서 멋진 답변을 찾았습니다.
매니페스트에서
android:windowSoftInputMode="adjustResize|stateAlwaysHidden"
xml에서
여기에 배경을 설정하지 말고 ScrollView에서보기를 유지하십시오.
자바에서
배경을 창으로 설정해야합니다.
getWindow().setBackgroundDrawableResource(R.drawable.bg_wood) ;
@Gem에게 감사합니다.
답변
덧붙여서 …
당신이 당신의 활동에 대한 목록보기를 가지고 있다면 이것을 추가해야합니다 android:isScrollContainer="false"
속성에 합니다 …
추가하는 것을 잊지 마세요 android:windowSoftInputMode="adjustPan"
액티비티에서 매니페스트 XML …
너희들이 사용한다면 android:windowSoftInputMode="adjustUnspecified"
레이아웃에서 스크롤 가능한보기로 하는 에도 소프트 키보드로 배경 크기가 계속 조정됩니다 …
“adjustPan”값을 사용하여 배경의 크기가 조정되지 않도록하는 것이 좋습니다.
답변
누군가 adjustResize
행동이 필요하고 ImageView
여기에서 크기를 조정 하지 않으려 는 경우 또 다른 해결 방법이 있습니다.
ImageView
안에 ScrollView
=> RelativeLayout
을 넣습니다 ScrollView.fillViewport = true
.
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fillViewport="true">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<FrameLayout
android:layout_width="100dp"
android:layout_height="100dp">
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="fitXY"
android:src="@drawable/gift_checked" />
</FrameLayout>
</RelativeLayout>
</ScrollView>
답변
앱에서 작업 할 때 주요 문제가 발생했습니다. 처음에는 @parulb에서 제공하는 방법을 사용하여 문제를 해결했습니다. 고마워 그러나 나중에 배경 이미지가 작업 표시 줄 (및 상태 표시 줄)에 의해 부분적으로 숨겨져 있음을 알았습니다. 이 작은 문제는 이미 @ zgc7009에 의해 제안되었으며 1 년 반 전에 @parulb의 답변 아래에 댓글을 달았지만 아무도 대답하지 않았습니다.
나는 하루 종일 일하는 방법을 찾기 위해 노력했으며 운 좋게도 적어도 지금은 휴대 전화 에서이 문제를 완벽하게 해결할 수 있습니다.
먼저 배경 이미지 위에 패딩을 추가하려면 드로어 블 폴더에 레이어 목록 리소스가 필요합니다.
<!-- my_background.xml -->
<?xml version="1.0" encoding="utf-8"?>
<layer-list
xmlns:android="http://schemas.android.com/apk/res/android">
<item android:top="75dp">
<bitmap android:src="@drawable/bg" />
</item>
</layer-list>
두 번째로 위에서 언급 한 것처럼이 파일을 백그라운드 리소스로 설정했습니다.
getWindow().setBackgroundDrawableResource(R.drawable.my_background);
Nexus 5를 사용하고 있습니다. XML에서 작업 표시 줄의 높이를 얻는 방법을 찾았지만 상태 표시 줄은 찾지 못했습니다. 따라서 상단 패딩에는 고정 높이 75dp를 사용해야합니다. 누구나이 퍼즐의 마지막 조각을 찾을 수 있기를 바랍니다.