DialogFragment删除黑色边框

the*_*osh 3 android background android-dialogfragment

我看到了这个问题,并且也这一个和其他一些人,但没有真正帮助了我.

我正在DialogFragment为我的列表视图构建一个快速操作,并尝试根据android开发指南设置自定义视图.

view_quick_action.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="@android:color/white" >

    <ImageView
        android:id="@+id/quick_action_image"
        android:layout_width="50dp"
        android:layout_height="50dp"
        android:layout_margin="20dp"
        android:scaleType="fitXY"
        android:src="@drawable/windows1" />

    <TextView
        android:id="@+id/quick_action_name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignTop="@+id/quick_action_image"
        android:layout_toRightOf="@+id/quick_action_image"
        android:ellipsize="end"
        android:singleLine="true"
        android:text="Lilly"
        android:textColor="#585858"
        android:textSize="16sp" />

    <TextView
        android:id="@+id/quick_action_activity"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBottom="@+id/quick_action_image"
        android:layout_toRightOf="@+id/quick_action_image"
        android:text="Updated 4 minutes ago"
        android:textColor="#a3a3a3"
        android:textSize="15sp" />

    <ImageButton
        android:id="@+id/popup_grid_leave"
        android:layout_width="50dp"
        android:layout_height="50dp"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/quick_action_activity"
        android:layout_margin="20dp"
        android:layout_marginTop="30dp"
        android:background="@color/transperent"
        android:src="@drawable/ic_action_leave" />

    <ImageButton
        android:id="@+id/popup_grid_silence"
        android:layout_width="50dp"
        android:layout_height="50dp"
        android:layout_alignBottom="@+id/popup_grid_leave"
        android:layout_alignTop="@+id/popup_grid_leave"
        android:layout_centerHorizontal="true"
        android:background="@color/transperent"
        android:src="@drawable/ic_action_silence" />

    <ImageButton
        android:id="@+id/popup_grid_mark_as_read"
        android:layout_width="50dp"
        android:layout_height="50dp"
        android:layout_alignBottom="@+id/popup_grid_leave"
        android:layout_alignParentRight="true"
        android:layout_alignTop="@+id/popup_grid_leave"
        android:layout_marginRight="15dp"
        android:background="@color/transperent"
        android:src="@drawable/ic_action_mark_as_read" />

</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)

QuickActionFragment.java

public class QuickActionFragment extends DialogFragment {

    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
    AlertDialog.Builder builder = new AlertDialog.Builder(mContext);

        View v = LayoutInflater.from(mContext).inflate(
        R.layout.view_quick_action, null, false);

        // SET ALL THE VIEWS

        builder.setTitle(null);

        AlertDialog dialog = builder.create();
        dialog.setView(v, 0, 0, 0, 0);
        // this line didn't change anything
        // dialog.getWindow().setBackgroundDrawable(new ColorDrawable(0));

        return dialog;
    }
}
Run Code Online (Sandbox Code Playgroud)

毕竟,当我跑步时,dialogFragment.show(getSupportedFragmentManager())我仍然得到如图所示的黑色边框: quickActionImage

关于如何解决这个问题的任何想法?

GrI*_*sHu 10

试试下面的代码:

public class QuickActionFragment extends DialogFragment {

    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        Dialog m_dialog = new Dialog(QuickActionFragment.this, R.style.Dialog_No_Border);
        LayoutInflater m_inflater = LayoutInflater.from(CustomDialogActivity.this);
        View v = LayoutInflater.from(mContext).inflate(R.layout.view_quick_action, null, false);
        // SET ALL THE VIEWS
        m_dialog.setTitle(null);
        m_dialog.setContentView(m_view);
        m_dialog.show();
        return dialog;
    }
}
Run Code Online (Sandbox Code Playgroud)

Dialog_No_Borderres/value/style.xml文件中添加样式.

<style name="Dialog_No_Border">
    <item name="android:windowIsFloating">true</item>
    <item name="android:windowBackground">@android:color/transparent</item>
</style>
Run Code Online (Sandbox Code Playgroud)

此样式导致R在清理后删除

  • 你的代码只能从API lvl 11开始支持,我一直支持到9 (2认同)