2013-05-28 10 views
8
<?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> 

これはダイアログのフラグメントレイアウトです。リストビューは、多くのアイテムを持っている場合ダイアログフラグメントの最大高さを設定したい

私は(ID/base_dialog_content @)でframeLayoutに

をコンテンツビュー(のTextViewまたはリストビュー)を追加し、ダイアログウィンドウで完全な高さです。

私は最大の高さダイアログやコンテンツビュー(またはリストビュー)を設定したい


編集:

私はOnLayoutChangeListener使用して問題を解決します。

しかし、私は、あなたが最初に1つのレイアウトコンテナにコンテンツビューを配置する必要が最大の高さを制御する

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)); 
      } 
     } 
    }); 
} 
+0

ためどのくらいですフルスクリーンの高さと幅のため、このコードでお気軽にお尋ねくださいあなたが望む最大の高さですか?それはdpで定義されているのか、または画面のサイズに基づいていますか? –

+0

@NAYOSO "画面サイズに基づいて"より良いです。しかし、 "dpの定数値"は私にとっても良いことです。 – ChangUZ

+0

私の答えをご覧ください:) –

答えて

1

)DialogFragment.onCreateViewで

((ハニカム以下)下位バージョンで同じ機能を必要とします

:(リニア/相対)のは、私の例では、私は画面の高さを(私はUtil.javaにそれを置く)を測定するために

のLinearLayout使用しますと言ってみましょうそのあなたは、あなたがでframeLayoutにコンテナを追加するコンテナにのTextView /リストビューを追加した後

LinearLayout llContainerContent = new LinearLayout(context); 
LayoutParams lpContainerContent = new LayoutParams(LayoutParams.FILL_PARENT, (Util.getDisplayHeight(context) * 8) /10); 
llContainerContent.setLayoutParams(lpContainerContent); 

は、そのあとは、コンテナを作成します。私は私の答えはあなたのために十分に明確であると思いますが、あなたは別の質問がある場合はコメント:)

+0

ありがとう。しかし、最大の高さに設定するのではありません。高さだけでなく、最大の高さを設定したい...コンテンツの高さが最大の高さよりも大きいかどうかをチェックすることはできません。 – ChangUZ

+0

ああ申し訳ありませんが、私は間違いを意味すると誤解しています。後でコードを変更します。 –

+0

@ChangUZですが、私のコードではビューが再び画面いっぱいになっていないと思います。子の合計の高さが親よりも大きい場合、プログラムがより多くのビューを追加するのを防ぎますか? –

1

Useダイアログ

WindowManager window = (WindowManager)context 

    .getSystemService(Context.WINDOW_SERVICE); 

    Display display = window.getDefaultDisplay(); 

    displayheight = display.getHeight(); 

    displaywidth = display.getWidth(); 
    dialog.getWindow().setLayout(displaywidth , 
       displayheight); 
関連する問題