nat*_*olf 9 android android-dialogfragment
我正在使用DialogFragment并发现当我创建一个内部LinearLayout的layout_width = match_parent时,宽度总是变为全屏,无论我试图通过固定父视图的layout_width和minWidth强制设置多少约束,或者设置布局CreateView()中的维度
dialog.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="@dimen/dialog_width"
android:layout_height="@dimen/dialog_height"
android:minWidth="@dimen/dialog_width"
android:minHeight="@dimen/dialog_height"
android:orientation="vertical"
android:paddingTop="5dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
...
</LinearLayout>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
Dialog.java
public class MyDialog extends DialogFragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
...
Resources r = getActivity().getResources();
getDialog().getWindow().setLayout( (int)r.getDimension(R.dimen.dialog_width), (int)r.getDimension(R.dimen.dialog_height));
return view;
}
}
Run Code Online (Sandbox Code Playgroud)
我能做到这一点的唯一方法是设置内部LinearLayout layout_width ="@ dimen/dialog_width
hacked dialog.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
... >
<LinearLayout
android:layout_width="@dimen/dialog_width"
android:layout_height="wrap_content">
...
</LinearLayout>
...
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
哪个工作正常,但对对话的其他部分有一些影响.这是Android中的错误吗?
我还没有看到任何关于此的文档,但我在某处(可能在SO上)读到,创建对话框时根布局的layout_width和layout_height参数被“wrap_content”覆盖。
我不确定这是否属实,但我所看到的布局行为表明这是真的。不管怎样,我已经通过假设这种情况来正确布局我的对话框。
如果可能的话,您可能还想在内部布局上尝试使用wrap_content。硬编码宽度往往无法在多种设备上正常工作。
| 归档时间: |
|
| 查看次数: |
3989 次 |
| 最近记录: |