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> 

Bu, iletişim bölümü düzenidir.İletişim kutusundaki maksimum yüksekliği ayarlamak istiyorum

ben ListView birçok Öğeler sahip olduğunda, iletişim penceresinde tam yüksekliği

içerik görünümü (id/base_dialog_content @) FrameLayout içine (TextView veya ListView) ekleyin. Ben OnLayoutChangeListener kullanarak sorunu çözmek

:

Ben maksimum yükseklik iletişim veya içerik görünümü (veya liste görünümünü)


Düzen kurmak istiyorum.

Ama ilk düzen kapta içerik görünümü koymak zorunda maksimum yüksekliğini kontrol etmek

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

için ne kadar süre is tam ekran yüksekliği ve genişliği için bu kod sormaya çekinmeyin İstediğiniz maksimum yükseklik dp veya ekran boyutuna göre tanımlanmış mı? –

+0

@NAYOSO "ekran boyutuna göre" daha iyi. ama "dp'de sabit değer" benim için de iyidir. – ChangUZ

+0

Lütfen cevabımı gör :) –

cevap

1

) DialogFragment.onCreateView yılında

((Honeycomb altında) düşük sürümde aynı işlevi gerekir (Lineer/Bağıl) ı (ı Util.java koydum) ekran yüksekliğini ölçmek için

LinearLayout kullanacağız benim örnekte diyelim:

Bu o zaman framelayout için kapsayıcı eklemek konteynıra TextView'un/liste görünümü ekledikten sonra

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

:

bundan sonra bir kapsayıcı oluşturun. Ben cevap sizin için yeterli açıktır umuyoruz, ancak başka bir soru varsa comment :)

+0

Teşekkürler. Ancak MAXIMUM yüksekliğini ayarlamak değil. Maksimum yüksekliği sadece yükseklik değil ayarlamak istiyorum ... İçerik görünüm yüksekliğinin maksimum yükseklikten büyük olup olmadığını kontrol edemez. – ChangUZ

+0

ah üzgünüm Ne demek istediğimi yanlış anlıyorum, lütfen bekleyiniz kodu daha sonra değiştireceğim –

+0

@ ChangUZ ama bence kodumla ekran tekrar ekrana dolmayacak, ya da tüm çocuk boyunu ölçmek istiyor musunuz? Çocukların toplam yüksekliklerinin ebeveynlerden daha fazla olması durumunda, programın daha fazla görünüm eklemesini engelleyebilir misiniz? –

1

Kullanım iletişim

WindowManager window = (WindowManager)context 

    .getSystemService(Context.WINDOW_SERVICE); 

    Display display = window.getDefaultDisplay(); 

    displayheight = display.getHeight(); 

    displaywidth = display.getWidth(); 
    dialog.getWindow().setLayout(displaywidth , 
       displayheight);