使用dialog_min_width_minor模拟标准对话框大小

时间:2014-05-30 12:18:29

标签: android layout dialog

由于某种原因我不能使用Dialog,所以我只是使用View层次结构来模拟它。我想让我的对话框显示在屏幕中央,标准的Android对话框大小。

我找到了资源值dialog_min_width_minor,但我该如何使用它?当我尝试这样做时:

<?xml version="1.0" encoding="utf-8"?>

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:background="@color/semi_transparent"
    android:layout_width="match_parent"
    android:layout_height="match_parent"> <!-- provides the gray semi-transparent background !-->

    <FrameLayout
        android:id="@+id/dialog_container"
        android:layout_gravity="center"
        android:background="@android:color/white"
        android:layout_height="wrap_content"
        android:layout_width="@android:dimen/dialog_min_width_minor"/>
</FrameLayout>

我得到一个例外:

  

二进制XML文件行#8:您必须提供layout_width属性。

2 个答案:

答案 0 :(得分:0)

我花了一点时间来到this example。您可以使用具有此主题的活动来模拟对话框。

有趣的是,AppCompat库有自己对这些属性的定义,但它们没有标准尺寸。

答案 1 :(得分:0)

对于它的价值,android.R.dimen.dialog_min_width_minor在一种情况下定义如下:

<item type="dimen" name="dialog_min_width_minor">95%</item>

您不能将其设置为xml布局中的宽度,但您可以系统地使用它来设置活动/片段/视图中的宽度。你可以这样做:

// Get the percentage as defined by android.R.dimen.dialog_min_width_minor
Resources resources = context.getResources();
TypedValue typedValue = new TypedValue();
resources.getValue(android.R.dimen.dialog_min_width_minor, typedValue, true);
float percentage = typedValue.getFraction(1, 1);

// Get the width of the display
Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
int displayWidth = size.x;

// set the width of your view
// view.width = displayWidth * percentage <--pseudocode