Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/192.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 自定义对话框大小以匹配Theme.Holo.Light.Dialog_Android_Android Layout_Dialog_Android Xml_Android Dialog - Fatal编程技术网

Android 自定义对话框大小以匹配Theme.Holo.Light.Dialog

Android 自定义对话框大小以匹配Theme.Holo.Light.Dialog,android,android-layout,dialog,android-xml,android-dialog,Android,Android Layout,Dialog,Android Xml,Android Dialog,如果我有一个活动的主题设置为theme.Holo.Light.Dialog,它的规模将非常大。在纵向模式下,它将几乎完全填满手机屏幕,但在横向模式下,它不会过长。例如,在这张来自谷歌的图片中,你可以看到对话框没有填满整个屏幕 它既不会折叠以匹配标题的宽度,也不会像使用扩展Dialog类的类来构建自己的对话框那样 这就是我的布局将要发生的事情 我需要将哪些属性应用于LinearLayout以使其具有良好的缩放效果?在我的自定义对话框中,我使用以下属性并设置对话框宽度,以正确匹配父级及其宽度缩放

如果我有一个活动的主题设置为
theme.Holo.Light.Dialog
,它的规模将非常大。在纵向模式下,它将几乎完全填满手机屏幕,但在横向模式下,它不会过长。例如,在这张来自谷歌的图片中,你可以看到对话框没有填满整个屏幕

它既不会折叠以匹配标题的宽度,也不会像使用扩展Dialog类的类来构建自己的对话框那样

这就是我的布局将要发生的事情


我需要将哪些属性应用于LinearLayout以使其具有良好的缩放效果?

在我的自定义对话框中,我使用以下属性并设置对话框宽度,以正确匹配父级及其宽度缩放

 <item name="android:windowBackground">@null</item>
 <item name="android:windowIsFloating">false</item>
@null
假的
两种情况

a。如果您需要它来填充屏幕,请将您的父母
minWidth
minHeight
设置为
1000dp

LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:minWidth="1000dp"  
    android:minHeight="1000dp"

b。如果您需要它在不填充整个屏幕的情况下进行缩放。在
相对布局中设置
线性布局的一个子项
,并设置
相对布局宽度以匹配父项

是否可以尝试在运行时更改对话框尺寸,如下所示:

DisplayMetrics metrics = getResources().getDisplayMetrics();
int width = metrics.widthPixels;
yourDialog.show();
yourDialog.getWindow().setLayout((6 * width)/7, LayoutParams.WRAP_CONTENT);


如果您使用片段。

您可以使用
Theme.Holo.Light.Dialog.MinWidth
来正确调整布局大小

从文件中:

公共静态最终整数主题\u全息\u灯光\u对话框\u最小宽度

Theme.Holo.Light.Dialog的变体,该对话框的最小宽度为 常规对话框

使用它的方法是通过将ContextThemeWrapper(使用它)代替上下文传递给自定义对话框的构造函数:

YourCustomDialog cDialog = new YourCustomDialog(
                        new ContextThemeWrapper(this, 
                              android.R.style.Theme_Holo_Light_Dialog_MinWidth));
这就是
Theme.Holo.Light.Dialog.MinWidth
的定义方式:

<style name="Theme.Holo.Light.Dialog.MinWidth">
    <item name="android:windowMinWidthMajor">@android:dimen/dialog_min_width_major</item>
    <item name="android:windowMinWidthMinor">@android:dimen/dialog_min_width_minor</item>
</style>
@android:dimen/dialog\u min\u width\u minor:

<!-- The platform's desired minimum size for a dialog's width when it
     is along the minor axis (that is the screen is portrait).  This may
     be either a fraction or a dimension. -->
<item type="dimen" name="dialog_min_width_minor">95%</item>

95%
看起来,您发布的图片中对话框的宽度约为65%。在纵向模式下,这将是95%

老实说,在纵向模式下,宽度看起来不像95%,但比以前好了:):


只需在自定义主题中添加两个值即可

<item name="android:windowMinWidthMajor">@android:dimen/dialog_min_width_major</item>
<item name="android:windowMinWidthMinor">@android:dimen/dialog_min_width_minor</item>
@android:dimen/dialog\u min\u width\u major
@android:dimen/dialog\u min\u width\u minor
例如


@空的
真的
@彩色/透明
真的
@空的
@android:dimen/dialog\u min\u width\u major
@android:dimen/dialog\u min\u width\u minor

你所说的
是什么意思?正确设置宽度比例
。这两行代码去哪里了?在style.xml中,放这个@颜色/覆盖\u背景假真,并将对话样式设置为CustomDialogTheme,宽度设置为与\u父项匹配。这将填充整个屏幕。如果我将
windowIsFloating
设置为true,它将折叠以匹配布局中的第一个文本视图。您可以发布自定义对话框XML吗?@Indiandroid我将代码发布到Pastebin中。您可以通过计算设备的高度和宽度,通过编程设置对话框布局的宽度。@可能,但我认为主题设置为theme.dialog+1的活动不会出现这种情况。我可以看到。但理想情况下不应该是这样。我可以在代码中更改它,但是这也没有将宽度设置为与原始对话框的宽度相匹配。嘿,谢谢。它肯定比我拥有的要好,但它仍然不符合我的活动,它的主题设置为
@android:style/theme.Holo.Light.Dialog
。这里有一些照片。底部的对话框是正确的。我还需要将我的自定义主题应用于对话框(更改微调器、搜索栏等的颜色),所以这有点糟糕,你不觉得吗?我不能有多个主题。我能把它实现到我自己的主题中吗?@MikkoP我对你想要的输出有一些疑问。嘿,正如我们所讨论的,我需要为我的对话框应用一个自定义主题。不仅是一个布局,而且是我的布局中seekbar和微调器的主题。我有一个有一个。如果我使用
theme.Holo.Light.Dialog.MinWidth
,你知道我如何应用这个主题吗?@MikkoP Yea,我可以帮你。让我们来看看。@MikkoP您是否能够通过Spinner在单独的弹出窗口而不是下拉列表中显示其选项来解决问题?
<!-- The platform's desired minimum size for a dialog's width when it
     is along the minor axis (that is the screen is portrait).  This may
     be either a fraction or a dimension. -->
<item type="dimen" name="dialog_min_width_minor">95%</item>
<item name="android:windowMinWidthMajor">@android:dimen/dialog_min_width_major</item>
<item name="android:windowMinWidthMinor">@android:dimen/dialog_min_width_minor</item>
<style name="MyDialog" parent="ThDialogBase">
        <item name="android:windowFrame">@null</item>
        <item name="android:windowNoTitle">true</item>
        <item name="android:windowBackground">@color/transparent</item>
        <item name="android:windowIsFloating">true</item>
        <item name="android:windowContentOverlay">@null</item>
        <item name="android:windowMinWidthMajor">@android:dimen/dialog_min_width_major</item>
        <item name="android:windowMinWidthMinor">@android:dimen/dialog_min_width_minor</item>
</style>