与此相关的问题与对话活动以及如何制作这些全屏有关,但我的问题略有不同。我希望这些对话框包含活动内容。
现在,“对话框活动”都继承了以下主题,
<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单位可以解决问题,但这似乎是一种解决方法而不是解决方案。
任何想法?
提前致谢。
干杯
答案 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_width
至fill_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 );
希望这会有所帮助:) ,,,