2011-04-05 93 views
0

我有一個基於內置的Android主題Theme.Dialog一個「對話」活動:在活動安卓:Theme.Dialog佈局 - 動態可見內容被切斷

<style name="Theme.Dialog"> 
    <item name="android:windowFrame">@null</item> 
    <item name="android:windowTitleStyle">@android:style/DialogWindowTitle</item> 
    <item name="android:windowBackground">@android:drawable/panel_background</item> 
    <item name="android:windowIsFloating">true</item> 
    <item name="android:windowContentOverlay">@null</item> 
    <item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item> 
    <item name="android:windowSoftInputMode">stateUnspecified|adjustPan</item>   

    <item name="android:colorBackgroundCacheHint">@null</item> 

    <item name="textAppearance">@android:style/TextAppearance</item> 
    <item name="textAppearanceInverse">@android:style/TextAppearance.Inverse</item> 

    <item name="textColorPrimary">@android:color/primary_text_dark</item> 
    <item name="textColorSecondary">@android:color/secondary_text_dark</item> 
    <item name="textColorTertiary">@android:color/tertiary_text_dark</item> 
    <item name="textColorPrimaryInverse">@android:color/primary_text_light</item> 
    <item name="textColorSecondaryInverse">@android:color/secondary_text_light</item> 
    <item name="textColorTertiaryInverse">@android:color/tertiary_text_light</item> 
    <item name="textColorPrimaryDisableOnly">@android:color/primary_text_dark_disable_only</item> 
    <item name="textColorPrimaryInverseDisableOnly">@android:color/primary_text_light_disable_only</item> 
    <item name="textColorPrimaryNoDisable">@android:color/primary_text_dark_nodisable</item> 
    <item name="textColorSecondaryNoDisable">@android:color/secondary_text_dark_nodisable</item> 
    <item name="textColorPrimaryInverseNoDisable">@android:color/primary_text_light_nodisable</item> 
    <item name="textColorSecondaryInverseNoDisable">@android:color/secondary_text_light_nodisable</item> 
    <item name="textColorHint">@android:color/hint_foreground_dark</item> 
    <item name="textColorHintInverse">@android:color/hint_foreground_light</item> 
    <item name="textColorSearchUrl">@android:color/search_url_text</item> 

    <item name="textAppearanceLarge">@android:style/TextAppearance.Large</item> 
    <item name="textAppearanceMedium">@android:style/TextAppearance.Medium</item> 
    <item name="textAppearanceSmall">@android:style/TextAppearance.Small</item> 
    <item name="textAppearanceLargeInverse">@android:style/TextAppearance.Large.Inverse</item> 
    <item name="textAppearanceMediumInverse">@android:style/TextAppearance.Medium.Inverse</item> 
    <item name="textAppearanceSmallInverse">@android:style/TextAppearance.Small.Inverse</item> 
</style> 

我的佈局,我有一個單一的EditText,一個按鈕和一個看不見的TextView我用它來顯示基於的EditText內容的有效性信息給用戶:

<?xml version="1.0" encoding="utf-8"?> 
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/dialog" 
android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:orientation="vertical" 
    android:paddingLeft="6dp" 
    android:paddingRight="6dp" 
    android:paddingBottom="6dp"> 
    <TextView 
     style="@style/DialogMessage" 
     android:id="@+id/error" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginBottom="4dp" 
     android:visiblity="gone" /> 
    <EditText 
     android:id="@+id/title" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:inputType="text|textCapWords" 
     android:maxLength="100" 
     android:maxLines="1" 
     android:ems="20" 
     android:scrollHorizontally="true" /> 
    <Button 
     android:id="@+id/rename" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="right" />  
</LinearLayout> 

當用戶處於縱向模式時,他們進入一些「壞'EditText中的文本,我使TextView可見,並用適當的錯誤填充它ssage。這工作得很好,因爲一切都將降檔,並表現出極大的TextView的,即使內容跨越多行。現在,在景觀,當我這樣做,TextView的顯示細膩,但底部元素(在這種情況下按鈕)被壓縮到一半左右是正常高度。中移動的元素,如果我把EditText上的底部,當TextView的是可見,它也被壓縮,並且在任何超過單個文本行更下方結果puttint TextView的被切斷。

我試圖迫使問題TextView的是通過重新設置的LinearLayout的大小填充後:

LinearLayout dialog = (LinearLayout) findViewById(R.id.dialog); 
dialog.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); 

我試圖重新繪製的LinearLayout TextView的是通過調用填充後:

LinearLayout dialog = (LinearLayout) findViewById(R.id.dialog); 
dialog.invalidate(); 

兩者都無效。有什麼想法發生在這裏?

感謝,

保羅

編輯:

有足夠的屏幕房地產充分...顯示所有三個部分,也具有相同內容的完全充氣TextView的,因爲我動態充氣,一切都顯示完整。

回答

8

沒弄明白這是爲什麼發生,但想出了一個變通。切換佈局到RelativeLayout的解決了這個問題,現在顯示一切使用下面的正確:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/dialog" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:paddingLeft="6dp" 
android:paddingRight="6dp" 
android:paddingBottom="6dp"> 
<EditText 
    android:id="@+id/inpt_title" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:inputType="text|textCapWords" 
    android:maxLength="100" 
    android:maxLines="1" 
    android:ems="20" 
    android:scrollHorizontally="true" /> 
<Button 
    android:id="@+id/btn_rename" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignRight="@id/inpt_title" 
    android:layout_below="@id/inpt_title" /> 
<TextView 
    style="@style/DialogMessage" 
    android:id="@+id/error" 
    android:layout_width="0dp" 
    android:layout_height="wrap_content" 
    android:layout_below="@id/btn_rename" 
    android:layout_alignLeft="@id/inpt_title" 
    android:layout_alignRight="@id/inpt_title" /> 
</RelativeLayout>