1

これについて何千もの質問があることは知っていますが、私はそれらをクロールしましたが、解決策はどれもうまくいきません.

私のアクティビティには、この種のレイアウトのタブ付きインターフェースがあります。

<RelativeLayout>
    <LinearLayout tabBar>
        <Button tab1 />
        <Button tab2 />
        <Button tab3 />
        <Button tab4 />
    </LinearLayout>
    <ViewFlipper>
        <fragment Tab1 />
        <fragment Tab2 />
        <fragment Tab3 />
        <fragment Tab4 />
    </ViewFlipper>
</RelativeLayout>

LinearLayout で tab2 ボタンがタップされると、ViewFlipper を変更して、Tab2Fragment によって制御される子 2 を表示します。

Tab2Fragment のレイアウトは次のようになります。

<FrameLayout>
    <ListView/>
</FrameLayout>

ListView 内の項目が選択されたら、新しいフラグメントを作成します。これを Sub2Fragment と呼び、子として FrameLayout に追加します。

Sub2Fragment には次のようなレイアウトがあります。

<LinearLayout android:layout_height="fill_parent" android:layout_width="fill_parent">
    <LinearLayout> <TextView /> <EditText /> </LinearLayout>
    <LinearLayout> <TextView /> <EditText /> </LinearLayout>
    <LinearLayout> <TextView /> <EditText /> </LinearLayout>
    <LinearLayout> <TextView /> <EditText /> </LinearLayout>
    <Button />
</LinearLayout>

ソフト キーボードが表示されると、EditText と Button の一部が覆われています。その LinearLayout を ScrollView でラップしてみました:

<ScrollView android:layout_height="fill_parent" android:layout_width="fill_parent">
    <LinearLayout android:layout_height="wrap_content" android:layout_width="fill_parent">
        <LinearLayout> <TextView /> <EditText /> </LinearLayout>
        <LinearLayout> <TextView /> <EditText /> </LinearLayout>
        <LinearLayout> <TextView /> <EditText /> </LinearLayout>
        <LinearLayout> <TextView /> <EditText /> </LinearLayout>
        <Button />
    </LinearLayout>
</ScrollView>

また、アクティビティの有無にかかわらずマニフェストをandroid:windowSoftInputMode="adjustResize"試しましたが、ビューのサイズを自動的に変更して、ソフトキーボードが表示されているときに ScrollView でコンテンツ全体をスクロールできるようにするものは何もありません。

また、アクティビティ全体を ScrollView でラップしようとしましたが、画面全体のサイズを埋めることに基づいており、ScrollView が子レイアウトを画面の実際のサイズから切り離すため、レイアウト全体が台無しになりました...

何か助けはありますか?

4

1 に答える 1

4

問題が見つかりました...上部のステータスバーを取り除きたかったので、これをアクティビティに追加しました:

getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);

これにより、ビューのソフト キーボードのサイズ変更が踏みにじられました。それをコメントアウトすると、すべて期待どおりに機能します。

于 2012-03-08T21:13:47.113 に答える