设置对话框的最大宽度

时间:2011-11-17 03:51:22

标签: android

我的对话框使用linearlayout作为其根目录,并使用以下代码作为其自定义主题:

    <style name="HuskyBusDialog">
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowFrame">@null</item>
    <item name="android:windowBackground">@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> 
</style>

是否可以设置最大宽度?它在手机上很好,但我试图优化它的平板电脑,它们太大了。

3 个答案:

答案 0 :(得分:1)

宽度将在XML中为线性布局处理,而不是在您应用于它的样式中处理。使用XML中的android:layout_width标记指定它可能有多宽。

答案 1 :(得分:1)

一个老问题,但是没有回复是合适的,但你可以在这里找到一些提示:How to customize the width and height when show an Activity as a Dialog

这有助于自定义宽度和高度,但不能设置最大宽度和高度!为了在使用对话框主题的活动上实现这一点,我必须做几件事:

1)设置布局监听器以了解何时设置了对话框布局。

2)如果对话框布局的大小超出了所需的限制,请调整对话框布局,有效地设置最大大小

这是我正在使用的工作片段,在setContentView()之后调用:

    getWindow().getDecorView().getViewTreeObserver().addOnGlobalLayoutListener(
            new OnGlobalLayoutListener()
    {
        @TargetApi(Build.VERSION_CODES.JELLY_BEAN)
        @SuppressWarnings("deprecation")
        @Override
        public void onGlobalLayout()
        {
            adjustDialog();
        }
    });

现在对话框大小调整,以实际屏幕大小的百分比表示:

private void adjustDialog()
{
    Window w = getWindow();
    w.setGravity(Gravity.CENTER);

    int current_width = w.getDecorView().getWidth();
    int current_height = w.getDecorView().getHeight();

    WindowManager.LayoutParams lp = w.getAttributes();

    DisplayMetrics dm = getResources().getDisplayMetrics();
    int max_width = (int) (dm.widthPixels * 0.90);
    int max_height = (int) (dm.heightPixels * 0.90);

    if (current_width > max_width)
    {
        lp.width = max_width;
    }
    if (current_height > max_height)
    {
        lp.height = max_height;
    }

    w.setAttributes(lp);
}

答案 2 :(得分:-1)

是的,如果你想为你的xml做Width GO 并尝试做

android:layout_width="Defined in pixels//20px"

或者你也可以尝试这个

android:width="Defined in pixels// 30px"

我希望它对你有帮助