我需要在一个占据整个屏幕的Fragment上创建一个对话框。对话框需要是一个浮动对话框,会被定位在Fragment上方,而Fragment外部会被暗淡处理。
对于自定义对话框,我有一个具有曲线边缘的LinearLayout,但无论我做什么,对话框都有一个黑色边框(非常小)。我尝试了一切来使它透明并消失(这样对话框只包含线性布局-曲线框),但均未成功。
对于DialogFragment,下面是我用于onCreateView的代码:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){
LinearLayout layout =(LinearLayout)inflater.inflate(R.layout.custom_dialog, null);
LinearLayout item = (LinearLayout)layout.findViewById(R.id.display_item);
populateItemData(item, inflater);
return layout;
}
custom_dialog只是一个LinearLayout,其android:background属性设置为#000000。
这是我的自定义Dialog样式。
<style name="CustomDialog" parent="android:style/Theme.Dialog">
<item name="android:windowBackground">@null</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowIsFloating">true</item>
<item name="android:windowIsTranslucent">true</item>
<item name="android:alwaysDrawnWithCache">false</item>
<item name="android:windowContentOverlay">@null</item>
</style>
我尝试了各种组合方式(根据我在线看到的),但我无法摆脱那令人烦恼的黑色边框,如果将LinearLayout背景设置为除#000000以外的任何颜色,我可以将其涂成白色或其他颜色...
我已经花了3-4个小时在这上面了,希望有人能够帮忙解决...
java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.Window android.app.Dialog.getWindow()' on a null object reference
。 - CoolMindgetDialog()。getWindow()。setBackgroundDrawableResource(android.R.color.transparent);
。为了避免引发异常,您应该通过dialogFragment.show(...);
方法从Activity或Fragment中调用DialogFragment
,而不是使用FragmentTransaction的add
方法。 - CoolMinddialog?.window?.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
。 - Francis Laclé