【问题标题】:remove white background in dialogfragment删除对话框片段中的白色背景
【发布时间】:2015-02-15 16:12:53
【问题描述】:

这就是我如何调用我的 DialogFragment:

DialogSelectAccount myDiag=new DialogSelectAccount();
myDiag.show(ft,"Diag" );

以下是(部分)我的 DialogFragment 的创建方式:

public class DialogSelectAccount extends DialogFragment {
public DialogSelectAccount() {

    }

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

@Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.dialog_select_account, container, false);
tvMessage = (TextView) rootView.findViewById(R.id.tvMessage);
        btnAccountPublic = (Button) rootView.findViewById(R.id.btnAccountPublic);
        btnAccountEnterprise = (Button) rootView.findViewById(R.id.btnAccountEnterprise);
        tvMessage.setText(message);
        btnAccountPublic.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                Login.setAccountType = 2;
                dismiss();
            }
        });
        btnAccountEnterprise.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                Login.setAccountType = 1;
                dismiss();
            }
        });
        return rootView;
    }

这是我的 DialogSelectAccount 的 xml

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

    <TextView
        android:id="@+id/tvMessage"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_margin="10dp"
        android:textColor="@android:color/black"
        android:textSize="15dp"
        android:textAlignment="center"
        android:gravity="center_horizontal"
        android:background="#ff26b4e9"
        android:autoText="true">
    </TextView>

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:background="#ff26b4e9"
        android:orientation="horizontal" >

        <Button
            android:id="@+id/btnAccountPublic"
            android:layout_width="150dp"
            android:layout_height="wrap_content"
            android:clickable="true"
            android:text="@string/accountPub"
            android:textColor="#ffffffff"
            android:background = "@drawable/roundedbutton" />

        <Button
            android:id="@+id/btnAccountEnterprise"
            android:layout_width="150dp"
            android:layout_height="wrap_content"
            android:layout_marginLeft="5dp"
            android:clickable="true"
            android:text="@string/accountEnt"
            android:textColor="#ffffffff"
            android:background = "@drawable/roundedbutton" />
    </LinearLayout>

</LinearLayout>

问题是总是显示令人讨厌的白色背景,如下所示。如何删除它?

【问题讨论】:

  • @imin:你看到我的回答了吗?
  • @Y.S.抱歉,我现在与另一个项目联系在一起。我将在本周末之前恢复到这个项目并给你我的答案。谢谢
  • 不知道你是怎么改变窗口背景的?

标签: android android-layout android-fragments android-dialogfragment android-dialog


【解决方案1】:

DialogFragmentonCreateView() 中,替换

View rootView = inflater.inflate(R.layout.dialog_select_account, container, false);

View rootView = inflater.inflate(R.layout.dialog_select_account, container);

另外,将此添加到onViewCreated()

getDialog().requestWindowFeature(Window.FEATURE_NO_TITLE);
getDialog().getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
setStyle(DialogFragment.STYLE_NO_FRAME, android.R.style.Theme);

在 XML 的最外层 LinearLayout 中,更改

android:layout_width="fill_parent"
android:layout_height="fill_parent"

android:layout_height="wrap_content"
android:layout_width="wrap_content"

试试这个。这应该可以。

【讨论】:

【解决方案2】:

我建议您改为在 DialogFragment 的 onCreateDialog 中使用自定义 UI 创建一个警报对话框。然后,您还可以轻松地为其添加样式以移除白色背景。

 override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
    val view = activity!!.layoutInflater.inflate(R.layout.dialogfragment_my_custom_view, null)
    val builder = AlertDialog.Builder(activity!!, R.style.MyDialogTheme)
    return builder
            .setView(view)
            .create()
}

然后你可以像这样创建“MyDialogTheme”:

<style name="ProgressDialogTheme" parent="Theme.AppCompat.Light.Dialog.Alert">
    <item name="android:windowBackground">@color/automile_transparent</item>
</style>

【讨论】:

    【解决方案3】:

    您可以为对话框创建样式:

    <style name="DialogStyle" parent="Base.Theme.AppCompat.Dialog">
        <item name="android:windowNoTitle">true</item>
    </style>
    

    并在代码中按方法使用:

    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        return new Dialog(getActivity(), R.style.DialogStyle);
    }
    

    或者您可以只在您的代码中为您的对话框设置FEATURE_NO_TITLE,如下面的代码所示:

    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
      Dialog dialog = super.onCreateDialog(savedInstanceState);
      dialog.getWindow().requestFeature(Window.FEATURE_NO_TITLE);
      return dialog;
    }
    

    【讨论】:

      【解决方案4】:

      更高的 android 版本设备会自动删除标题空间。但是对于低版本我们必须添加一些代码。

      在 onCreateDialog() 方法中添加 Window.FEATURE_NO_TITLE 更有效。下同:

      @Override
      public Dialog onCreateDialog(Bundle savedInstanceState) {
      
         Dialog dialog = super.onCreateDialog(savedInstanceState);
         // request a dialog window without the title
         dialog.getWindow().requestFeature(Window.FEATURE_NO_TITLE);
         return dialog;
      }
      

      【讨论】:

        【解决方案5】:

        在这里,我认为您正在尝试隐藏标题栏。使用这个

        getDialog().getWindow().requestFeature(Window.FEATURE_NO_TITLE);
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-11-30
          • 1970-01-01
          • 2017-11-10
          • 2011-12-28
          • 2019-10-27
          • 2023-02-24
          相关资源
          最近更新 更多