如何从DialogFragment中删除标题?

时间:2015-03-19 08:54:26

标签: android android-dialogfragment

我在我的项目中使用DialogFragment,而我正在使用

禁用标题
getDialog().getWindow().requestFeature(Window.FEATURE_NO_TITLE);

但我的对话已经变得歪曲了。我想保持对话框原样并删除标题。我该怎么办?

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout    xmlns:android="http://schemas.android.com/apk/res/android"
                 android:orientation="vertical" android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:background="#ff2d35ff">


     <LinearLayout
         android:orientation="vertical"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:layout_marginRight="39dp"
         android:layout_marginLeft="39dp"
         android:layout_gravity="center_horizontal"
         android:background="#ff6cff23">

         <LinearLayout
             android:orientation="horizontal"
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:layout_gravity="center_horizontal">

             <TextView
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
                 android:text="ItemName"
                 android:id="@+id/itemName"
                 android:layout_weight="1"
                 android:background="#ffd861ff"/>

             <TextView
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
                 android:text="ItemPrice"
                 android:id="@+id/itemPrice"
                 android:layout_weight="1"
                 android:background="#ff2ff8ff"/>
     </LinearLayout>

     <ImageView
         android:layout_width="100dp"
         android:layout_height="100dp"
         android:id="@+id/itemImage"
         android:layout_gravity="center_horizontal"/>

     <TextView
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:text="some test"
         android:id="@+id/textView9"
         android:layout_gravity="center_horizontal"/>

     <LinearLayout
         android:orientation="horizontal"
         android:layout_width="match_parent"
         android:layout_height="match_parent"
         android:layout_gravity="center_horizontal"
         android:background="#ffffff2c">

         <Button
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:text="-"
             android:id="@+id/itemMinus"
             />

         <TextView
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:text="1"
             android:id="@+id/textView11"
             android:layout_weight="1"
             android:gravity="center_horizontal"/>

         <Button
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:text="+"
             android:id="@+id/itemPlus"/>
     </LinearLayout>

 </LinearLayout>

 <LinearLayout
     android:orientation="horizontal"
     android:layout_width="match_parent"
     android:layout_height="fill_parent"
     android:layout_gravity="center_horizontal"
     android:gravity="center_horizontal">

     <ImageButton
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:id="@+id/itemAdd"
         android:src="@drawable/positive"
         android:background="@android:color/transparent"/>

     <ImageButton
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:id="@+id/itemCancel"
         android:src="@drawable/negative"
         android:background="@android:color/transparent"/>
 </LinearLayout>

我意识到当我删除标题对话框时找不到match_parent

3 个答案:

答案 0 :(得分:14)

我通常会在DialogFragment的子类中覆盖onCreate并调用setStyle(STYLE_NO_TITLE, 0);

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setStyle(STYLE_NO_TITLE, 0);
}

Here您可以找到setStyle的文档。 STYLE_NO_TITLE的文档说:

  

setStyle(int,int)的样式:不包括标题区域。

答案 1 :(得分:12)

你必须覆盖dialogfragment类中的onCreateDialog方法。

@Override
   public Dialog onCreateDialog(final Bundle savedInstanceState) {
      RelativeLayout root = new RelativeLayout(getActivity());
      root.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
      final Dialog dialog = new Dialog(getActivity());
      dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
      dialog.setContentView(root);
      dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.WHITE));
      dialog.getWindow().setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);

      return dialog;
   }

答案 2 :(得分:0)

您可以实现更简单的方式,如下面的代码 -

Dialog dialog = new Dialog(mContext, android.R.style.Theme_Black_NoTitleBar);

Dialog dialog = new Dialog(mContext, android.R.style.Theme_Black_NoTitleBar_Fullscreen);