由于某种原因我不能使用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属性。
答案 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