28

相対レイアウトを含むルートscrollview要素と、相対レイアウト内のフォーム要素の束があります。

どういうわけか、ソフトキーボードが上がっていると、一番下までスクロールできないようで、ボタンの1つが半分になります。

これは、私が何を意味するかを示すための階層ビューアのスクリーンショットです。

ここに画像の説明を入力してください

ご覧のとおり、システムはビューがキーボードを超えて継続していることを認識していますが、scrollview(画面の表示部分を正しく埋める)は本来のように下にスクロールし続けません。

アクティビティのマニフェストにandroid:windowSoftInputMode="adjustResize"ありますが、パンに切り替えることはできません。

どんな助けでも大歓迎です。

編集:私はこれを複数のビューで見ています。同じ問題のある別のビューのxmlは次のとおりです。

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:background="@drawable/background" >
    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="32dp" >
        <EditText
            android:id="@+id/reset_oldpass"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_alignParentRight="true"
            android:ems="10"
            android:singleLine="true"
            android:hint="@string/current_password"
            android:layout_marginTop="16dp" />
        <EditText
            android:id="@+id/reset_pass1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_alignParentRight="true"
            android:layout_below="@+id/reset_oldpass"
            android:ems="10"
            android:hint="@string/reset_new_pass"
            android:inputType="textPassword"
            android:layout_marginTop="16dp" />
        <EditText
            android:id="@+id/reset_pass2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_alignParentRight="true"
            android:layout_below="@+id/reset_pass1"
            android:ems="10"
            android:hint="@string/reset_confirm_pass"
            android:inputType="textPassword"
            android:layout_marginTop="16dp" />
        <TextView
            android:id="@+id/reset_forgot_password"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_alignParentRight="true"
            android:layout_below="@+id/reset_pass2"
            android:layout_marginTop="16dp"
            android:textColor="@color/Link"
            android:textStyle="bold"
            android:text="@string/Login_forgot_password" />
        <Button
            android:id="@+id/reset_reset_password_button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@+id/reset_forgot_password"
            android:layout_centerHorizontal="true"
            android:layout_marginTop="16dp"
            android:layout_marginBottom="32dp"
            android:text="@string/reset_change_pass" />
    </RelativeLayout>
</ScrollView>
4

4 に答える 4

41

これは本当に奇妙なことですがandroid:layout_margin="32dp"、RelativeLayout内が原因のようです。私がそれを取り出すと、巻物は正しく機能しました。

もちろん、このため、フォーム要素にさらに多くのマージンを追加する必要がありましたが、少なくともこれは修正されました。

于 2012-07-26T01:55:00.573 に答える
13

同じ問題が発生し、RelativeLayoutのマージンの代わりにScrollViewのパディングを使用して修正しました。

したがって、android:layout_margin="32dp"RelativeLayout(ScrollViewの子)から削除しandroid:padding="32dp"て、ScrollViewに追加します。

于 2013-08-07T12:32:08.707 に答える
2

ロリポップ以上でステータスバーを透明にすることは、私にとって問題を引き起こしていました。設定

android:fitsSystemWindows = "true"
scrollViewを含むレイアウトの親ビューに問題を解決しました。

于 2018-02-23T08:07:57.937 に答える
0

アプリでこの問題が発生しましたが、コンテンツをラップするようにScrollViewlayout_heightが設定されていることが原因であることがわかりました。問題は、ScrollViewを必要とするのに十分なコンテンツがある場合、ScrollViewの下部が画面から任意の量だけ離れているため、コンテンツをラップしたくないということです。キーボードがポップアップするまでScrollViewが必要なかったため、これの影響を受けるのに十分なデータがありませんでした。見た目では、OPは同じ状況でした。

これで、キーボードがポップアップすると、ScrollViewの下部がキーボードの高さと同じ量だけ持ち上げられ、表示されている画面の下部より下にあるのと同じ任意の量だけキーボードの上部より下になります。

最終的に、私の修正は、ScrollViewの上部をツールバーにバインドしてから、ツリーでScrollVIewを右クリックし、[垂直方向に中央揃え]を選択することでした(親オプションではありません)。今では魅力のように機能します。layout_heightは自動的に0dpになります。

于 2017-10-02T06:56:01.697 に答える