<?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> <FrameLayout android:id="@+id/base_dialog_content" android:background="@drawable/dialog_description_background" android:layout_width="match_parent" android:layout_height="wrap_content"> </FrameLayout> <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>
This is a mock fragment of the dialog.
I am adding a content view (TextView or ListView) to FrameLayout (@ id / base_dialog_content)
When a ListView has many elements, the Dialog has full height in the window.
I want to set the maximum height dialog or view content (or view list)
Edit:
I solve the problem using OnLayoutChangeListener.
But I need the same function in the lower version (below HoneyComb)
In 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)); } } }); }
android android-layout android-linearlayout
Changuz
source share