指定FEATURE_NO_TITLE后,DialogFragment宽度缩小

use*_*402 6 android dialog android-fragments android-support-library

所以这是我的onCreateView方法:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
  getDialog().getWindow().requestFeature(Window.FEATURE_NO_TITLE);
  View view = inflater.inflate(R.layout.my_view, container, false);
  ...
  return view;
}
Run Code Online (Sandbox Code Playgroud)

而布局本身就是一个LinearLayout

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
Run Code Online (Sandbox Code Playgroud)

由于某种原因,在添加行后getDialog().getWindow().requestFeature(Window.FEATURE_NO_TITLE);,对话框缩小以包装内容; 实际上,其中一个TextView被强制将其一行包装成两行.我希望Dialog填充屏幕的宽度,保存我指定的一些边距.

Pau*_*rke 22

使用此行并且它将是全宽,无论孩子如何:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setStyle(DialogFragment.STYLE_NO_TITLE,
            android.R.style.Theme_Holo_Light_Dialog_NoActionBar_MinWidth);
}
Run Code Online (Sandbox Code Playgroud)

关键在于NoActionBar_MinWidth主题宣言.

  • 该主题现已弃用,可以使用 API 21+ 的“android.R.style.Theme_Material_Dialog_NoActionBar_MinWidth” (2认同)

use*_*402 16

我解决了这个问题,但我不喜欢问题或解决方案的原因.

问题在于这一点,其中一个儿童观点是

<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
Run Code Online (Sandbox Code Playgroud)

改变它

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
Run Code Online (Sandbox Code Playgroud)

做了伎俩.