我试图在我的dialogFragment类中膨胀一个CustomView,它工作正常,但宽度占整个屏幕(90%),但如果我在AlertDialog中膨胀相同的布局,它只是工作正常,宽度似乎正确&好。
我也试过通过onStart()设置DialogFragment的宽度,但这不是理想的结果......
这就是我想要的(AlertDialog中的CustomView)
但这是通过DialogFragment的结果 - 与AlertDialog相比,更多的宽度!
布局文件 -
<?xml version="1.0" encoding="utf-8"?>
<ScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/lz_gridChooserParent"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<com.lazygeniouz.colorpicker.FillGridView
android:id="@+id/lz_grid"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:columnWidth="@dimen/colorchooser_circlesize"
android:clipToPadding="false"
android:gravity="center"
android:horizontalSpacing="8dp"
android:numColumns="auto_fit"
android:orientation="vertical"
android:stretchMode="columnWidth"
android:verticalSpacing="8dp"
android:padding="16dp"/>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="left|bottom"
android:text="Custom"
android:id="@+id/lz_gotoCustom"
android:background="?attr/selectableItemBackground"
android:layout_margin="10dp"
android:typeface="serif"
android:textStyle="bold"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center|bottom"
android:text="@string/back"
android:id="@+id/lz_back"
android:background="?attr/selectableItemBackground"
android:layout_margin="10dp"
android:typeface="serif"
android:textStyle="bold"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right|bottom"
android:text="@string/done"
android:id="@+id/lz_done"
android:background="?attr/selectableItemBackground"
android:layout_margin="10dp"
android:typeface="serif"
android:textStyle="bold"/>
</FrameLayout>
</LinearLayout>
</ScrollView>
答案 0 :(得分:2)
如果您计划在固定大小的设备上运行此应用程序而不是正常,但是如果您的应用程序将在不同大小的设备(不同屏幕尺寸或平板电脑的手机)上运行,而不是考虑在您的片段容器上应用match_parent,并且从父容器应用布局填充,以及片段周围所需的空白空间比例。
这将让您控制片段的大小,同时允许在不同屏幕尺寸的情况下平滑调整大小。
例如,如果从包含线性布局根元素和片段子元素的XML文件中扩展活动布局,则填充将应用于线性布局元素,match_parent将用于fragment元素。在这种情况下,您可以选择相关的填充数字,以实现目标。
我希望这能为您提供一些有用的实施方案。
答案 1 :(得分:1)
试试我的工作:
我的类是扩展AlertDialog而不是DialogFragment,
并且在类中我重写了show函数,如下所示:
@Override
public void show() {
super.show();
getWindow().setLayout(500, 300);
然后我这样打开它:
MyDialog myDialog = new MyDialog(getActivity());
myDialog.show();
希望它有所帮助!
答案 2 :(得分:0)
这就是我做的, 我只是将DialogFragment的宽度设置为520&amp;它给了我我想要的东西:)