Je veux régler max hauteur dans la boîte de dialogue fragment

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" 
    android:minWidth="@dimen/dialog_min_width"
    android:padding="@dimen/dialog_padding"
    android:background="@drawable/dialog_background" >

    <TextView android:id="@+id/base_dialog_title"
        style="@style/DialogTitleTextViewStyle"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:singleLine="true"
        android:gravity="center" />

    <FrameLayout
        android:layout_width="match_parent"
        android:layout_height="16dp" >
    </FrameLayout>

<!-- *********************** HERE ************************* -->

    <FrameLayout android:id="@+id/base_dialog_content"
        android:background="@drawable/dialog_description_background"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
    </FrameLayout>

<!-- *********************** HERE ************************* -->

    <FrameLayout
        android:layout_width="match_parent"
        android:layout_height="16dp" >
    </FrameLayout>

    <LinearLayout android:id="@+id/base_dialog_button_group"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:orientation="horizontal">

    <Button
        android:id="@+id/base_dialog_button_negative"
        style="?android:attr/buttonStyleSmall"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:visibility="gone"/>

    <Button
        android:id="@+id/base_dialog_button_neutral"
        style="?android:attr/buttonStyleSmall"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:visibility="gone"/>

    <Button
        android:id="@+id/base_dialog_button_positive"
        style="?android:attr/buttonStyleSmall"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:visibility="gone"/>

    </LinearLayout>
</LinearLayout>

Ce fragment de dialogue mise en page.

- Je ajouter d'affichage de contenu (TextView ou ListView) dans FrameLayout (@id/base_dialog_content)

Quand ListView a de nombreux Éléments, Dialogue est toute la hauteur de la fenêtre.

Je veux régler la hauteur maximale de dialogue ou affichage de contenu (ou liste)


Edit:

- Je résoudre le problème à l'aide de OnLayoutChangeListener.

Mais j'ai besoin de la même fonction dans la version inférieure (ci-dessous en Nid d'abeille)

Dans DialogFragment.onCreateView()

FrameLayout contentContainer = (FrameLayout) view.findViewById(R.id.base_dialog_content);       
final View contentView = createContentView(inflater, contentContainer);
contentContainer.addView(contentView);

if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) {
    //TODO Check content view height and change height
} else {
    view.addOnLayoutChangeListener(new OnLayoutChangeListener() {

        @Override
        public void onLayoutChange(View v, int left, int top, int right,
                int bottom, int oldLeft, int oldTop, int oldRight, int oldBottom) {
            int height = v.getHeight();
            int contentHeight = contentView.getHeight();
            int winHeight = ActivityUtil.getDisplayHeight(getSherlockActivity());

            LogUtils.pe(height+" /"+winHeight+" /"+contentHeight);

            int needHeight = height - winHeight*8/10;
            if (needHeight > 0) {
                contentView.setLayoutParams(
                        new LayoutParams(LayoutParams.MATCH_PARENT, contentHeight-needHeight));
            }
        }
    });
}
quelle est la durée maximale de la hauteur que vous voulez?est-il défini en dp ou en fonction de la taille de l'écran?
la taille de l'écran", c'est mieux. mais "la valeur de la constante dans dp" est bon pour moi, trop.
Veuillez voir ma réponse 🙂

OriginalL'auteur ChangUZ | 2013-05-28