用于包装内容的对话活动

时间:2011-05-31 00:16:55

标签: android android-layout

与此相关的问题与对话活动以及如何制作这些全屏有关,但我的问题略有不同。我希望这些对话框包含活动内容。

现在,“对话框活动”都继承了以下主题,

<style name="tabDialog" parent="@android:Theme.Dialog">
    <item name="android:windowBackground">@drawable/panel_background</item>
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowFullscreen">false</item>
</style>

清单中的活动定义示例

<activity android:name=".TabSettingsActivity"
    android:theme="@style/tabDialog" android:excludeFromRecents="true"
    android:configChanges="keyboardHidden" />

内容视图父视图的定义如下,

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content" android:layout_height="wrap_content"
    android:background="@layout/dialog_rounded_background"
    android:orientation="vertical">

并且布局中的所有子视图也为两个维指定了wrap_content。我也试过使用RelativeLayout作为父亲,但也一样。

在活动的onCreate中设置内容视图后,我这样做

  getWindow().setLayout(LayoutParams.WRAP_CONTENT,
                LayoutParams.WRAP_CONTENT);

这些东西实际上似乎都没有任何区别。问题主要与对话框高度有关,大约比必要大50%。对话框的一半只是死空间。将根视图维度设置为硬编码的dp单位可以解决问题,但这似乎是一种解决方法而不是解决方案。

任何想法?

提前致谢。

干杯

7 个答案:

答案 0 :(得分:3)

试一试。这解决了我的问题。

<style name="NewDialog" parent="@android:style/Theme.Dialog">
        <item name="android:windowFrame">@null</item>
        <item name="android:windowBackground">@android:color/transparent</item>
        <item name="android:windowIsFloating">true</item>
        <item name="android:windowContentOverlay">@null</item>
        <item name="android:windowTitleStyle">@null</item>
        <item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item>
        <item name="android:windowSoftInputMode">stateUnspecified|adjustPan</item>
        <item name="android:backgroundDimEnabled">false</item>
        <item name="android:background">@android:color/transparent</item>
    </style>

答案 1 :(得分:2)

您正在使用的父视图“对话框圆形背景”中的对话框背景是问题,因为它可能与您的屏幕尺寸一样大。请检查一下。

答案 2 :(得分:2)

使用Theme.AppCompat.Light.Dialog.Alert主题代替..它将包装对话框高度以包装内容。

答案 3 :(得分:1)

尝试设置layout_margin。如果失败,那么常规活动填充和边距可能是罪魁祸首。

答案 4 :(得分:1)

我正在使用DialogFragment,如果您使用setStyle

,效果会很好
public class MyDialogFragment extends DialogFragment {
        public MyDialogFragment() {
            setStyle(STYLE_NO_FRAME, android.R.style.Theme_Dialog);
        }
    }

答案 5 :(得分:1)

使用相同的自定义对话框。

只需将xml布局设置为填充父级layout_widthfill_parent的屏幕。

答案 6 :(得分:1)

只需你可以获得android设备屏幕的宽度和高度:

    //Define the size of layout 
    Display display = getWindowManager().getDefaultDisplay(); 
    int widths = display.getWidth();  
    int heights = display.getHeight(); 

然后您可以根据这些值指定宽度或高度!为:

 getWindow().setLayout(widths ,
                       heights );

希望这会有所帮助:) ,,,