2011-05-31 30 views
17

对此类问题也有类似的问题,涉及对话活动以及如何使这些全屏,但我有一个稍微不同的问题。我想要这些对话框来包装活动内容。包装内容的对话活动

现在,“对话活动”所有继承以下主题,在清单活动定义的

<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单位解决了这个问题,但这似乎是一种解决方法而不是解决方案。

任何想法的人?

在此先感谢。

干杯

+1

你解决了这个问题吗?如果是这样,请让我知道。 – Christian 2011-08-02 15:03:34

+0

Hy,你是否设法找到了解决办法?谢谢 – Paul 2013-03-15 08:25:28

+0

您是否将'Dialogue'作为'Activity'使用,或者您使用'Activity'作为'Dialogue'?为什么? – Xcihnegn 2015-02-24 08:57:31

回答

1

尝试设置layout_margin。如果失败了,那么定期的活动填充和边距可能会受到责备。

1

我使用的是DialogFragment和它工作得很好,如果你使用setStyle

public class MyDialogFragment extends DialogFragment { 
     public MyDialogFragment() { 
      setStyle(STYLE_NO_FRAME, android.R.style.Theme_Dialog); 
     } 
    } 
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> 
+0

对我来说不起作用 – 2015-12-23 05:19:01

+0

大部分代码都不会执行任何操作(=>已经在父级样式中预定义)。你唯一要改变的是将背景颜色设置为透明,并删除标题样式(这似乎没有任何影响) – Aenadon 2016-11-02 08:55:59

2

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

1

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

只需设置xml布局以填写父母layout_widthfill_parent即可。

1

只要你能得到Android设备屏幕的宽度和高度:

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

然后你就可以指定基于这些值的宽度或高度!正如:

getWindow().setLayout(widths , 
         heights); 

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

1

使用Theme.AppCompat.Light.Dialog.Alert主题,而不是..它应包住对话框高度来包装内容。