30

このレイアウトを使用する偽のダイアログがあります:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout    xmlns:android="http://schemas.android.com/apk/res/android"
                android:layout_height="match_parent"
                android:layout_width="match_parent"
                android:id="@+id/containerPageConatiner">

    <FrameLayout    android:id="@+id/dialogHolder"
                    android:layout_height="wrap_content"
                    android:layout_width="wrap_content"
                    android:padding="15dp"
                    android:layout_gravity="center"
                    android:background="@drawable/panel_picture_frame_bg_focus_blue"/>    
</FrameLayout> 

<FrameLayout>開いているダイアログに応じて、フラグメントを内部に配置します-ダイアログを制御するアクティビティは次のようになります。

<activity
    android:label="@string/app_name"
    android:name=".activity.DialogActivity"
    android:theme="@style/CustomTheme.Screen.Transparent" 
    android:windowSoftInputMode="adjustResize">

残念ながら、ダイアログ内の編集テキストをクリックしても、サイズ変更は行われません。windowSoftInputMode機能はパンモードと同じなので、文字通り違いはありません。

ドキュメントには「もちろん、これは十分なスペースを作るために縮小できるサイズ変更可能な領域があるアプリケーションでのみ機能します」と書かれていますが、「サイズ変更可能な領域」意味はわかりません。サイズ変更可能な領域がありますか?

誰かが何が起きているか知っているなら、彼らは私を助けることができますか?

編集

このようにダイアログを囲んでも、何も変わりません。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/containerPageConatiner"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <View
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:layout_weight="1" />

    <FrameLayout    
        android:id="@+id/dialogHolder"
        android:layout_height="wrap_content"
    android:layout_width="wrap_content"
        android:padding="15dp"
        android:layout_gravity="center"
        android:background="@drawable/panel_picture_frame_bg_focus_blue"/>

    <View
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:layout_weight="1" />
</LinearLayout>

EDIT2

親としてのScrollviewも役に立ちません:

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/containerPageConatiner"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <FrameLayout
            android:id="@+id/dialogHolder"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:padding="15dp" />

</ScrollView>
4

9 に答える 9

52

ウィンドウのサイズ変更に機能する基本機能を試して取得するために、新しいプロジェクトを作成し、プロジェクトのターゲットピースに向かってゆっくりと移動しました。これを行うと、問題を次のように追跡しました。

私のテーマ階層には、次のプロパティがありました。

<item name="android:windowFullscreen">true</item> 

- 私のTheme.Black.NoTitleBar.FullScreenカスタムテーマの先祖。

ドキュメントは、これが「このウィンドウを画面全体に表示するかどうかを示すフラグ」であることを示唆しています。画面全体を占有するアプリがある場合、これは良いことのように思えます...ただし、フラグなしでも画面全体を占有します。

実際、これを取り出しても、アプリにまったく変化はありません...adjustResize今は完全に機能することを除けば.

于 2011-12-06T14:52:18.227 に答える
2

問題は FrameLayout にあるようです。そのように動作するため、各子がそのフレームの表示スペースを占有するため、子に合わせてサイズを変更する必要はありません。RelativeLayout を使用してみてください。それはうまくいくはずです。

于 2011-12-06T10:29:22.983 に答える
1

親としてa を使用せずに、親ビュー ( a ) とアクティビティのマニフェストにScrollView追加したところ、機能しました。android:fitsSystemWindows="true"RelativeLayoutadjustResize

于 2016-10-22T20:56:45.710 に答える
0

一度私のために働いLinearLayoutた、あなたを着てみてください..ScrollView

于 2011-12-06T10:36:34.580 に答える
-1

フルスクリーン フラグがアクティビティに割り当てられているときに元のポスターが発見されたので、android:windowFullscreen 属性は機能しないため、ソフト キーボードが表示されている場合はウィンドウのサイズが変更されず、スクロールできません。

フルスクリーン フラグを削除し、フルスクリーン テーマを使用しないだけで、ソフト キーボードが表示されているときにスクロールできるようになります。

于 2013-01-16T20:43:38.037 に答える
-3

スタイルで に設定windowTranslucentStatusしていることを確認してください。false

于 2016-02-25T12:43:17.200 に答える