いくつかのビューを持つレイアウトがあり、そのうちの1つはEditTextです。レイアウトは1ページに簡単に収まりますが、ソフトキーボードを使用しないと、レイアウトはスクロールしません。これが私のレイアウトの要約です。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:background="@drawable/background" >
<ScrollView
Android:id="@+id/ScrollView1"
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
Android:layout_alignParentTop="true" >
<LinearLayout
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:orientation="vertical" >
<CheckBox/>
<TextView/>
<LinearLayout>
<EditText>
<requestFocus />
</EditText>
</LinearLayout>
<TextView/>
<LinearLayout>
<Spinner/>
</LinearLayout>
</LinearLayout>
</ScrollView>
<Button
Android:layout_alignParentBottom="true" />
</RelativeLayout>
そして、私のマニフェストで属性を宣言しました:
Android:windowSoftInputMode="adjustResize|stateHidden"
なぜそれが機能しないのか、それが機能することを確認する方法を知っていますか?
前もって感謝します!
さて、明らかにScrollViewのAndroid:layout_height
をwrap_content
に設定してはいけません。 match_parent
に設定し、Android:layout_above
をページ下部のボタンに設定します。
理由を聞かないでください。しかしこれで問題は解決しました。
私は同じ問題を抱えていて、マニフェストでアクティビティをチェックしましたが、動作しなかった理由は、このプロパティを使用しなかったためです。
Android:windowSoftInputMode="adjustResize"
今ではうまく機能し、アンカーを追加する必要はありません。
私の場合、上記のどれも機能しませんでした。
テーマにitem name="Android:windowTranslucentStatus">true</item>
がありました。そして、スクロールビューがある親レイアウトにAndroid:fitsSystemWindows="true"
を設定することで修正されました。
AndroidManifest.xmlファイルのタグにAndroid:windowSoftInputMode="stateHidden|adjustResize"
を追加します。これにより、ソフトキーボードが表示された後、画面が左上のスペースにサイズ変更されます。そのため、簡単にスクロールできます。
ScrollViewを親レイアウトとして設定してみてください。それは私にとって魅力のように機能します!
私の問題は、HorizontalScrollViewにありました。私の場合、HorizontalScrollViewを次のように設定する必要がありました。
Android:layout_width="match_parent"
Android:layout_height="match_parent"
そして削除:
Android:layout_above="@+id/closeButton"
Android:layout_below="@+id/logo"
AndroidManifest.xmlでは、アクティビティは次のように設定されます。
Android:windowSoftInputMode=""
この奇妙なバグに出くわした人の助けになることを願っています。
私の場合、上記のソリューションはいずれも[〜#〜] remove [〜#〜]まで機能しません。
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
私の活動では、そのコードを使用して全画面表示を取得します。場合によっては、フルスクリーンの設定をすべて削除して、上記の解決策が機能するようにしてください。