2012-07-30 59 views
3

需要從對話框片段中消除頂部和底部邊框。你怎麼做呢?Android對話框片段消除黑色邊框(頂部和底部)

AlertDialog.Builder builder = new AlertDialog.Builder(activity); 
    builder.setCancelable(true); 

    LayoutInflater inflater = LayoutInflater.from(activity); 
    View view = inflater.inflate(R.layout.variants_dialog, null); 

    // setup views 
    setupListView(view); 
    ... 

    builder.setView(view); 
    return builder.create(); // HERE I HAVE TOP & BOTTOM BLACK BORDERS 

這沒有做什麼:

 builder.setView(view); 
     AlertDialog result = builder.create(); 
     result.getWindow().setBackgroundDrawable(new ColorDrawable()); 
     return result; 

有沒有這樣的方法:

  dialog.setView(layout, 0, 0, 0, 0); 
+0

ahh Android,每個視圖都有它自己的小隱藏的難題花費數小時在sovling ...很有趣你是。我希望在5.0中有更多的無證,隨機的樂趣! – samosaris 2012-12-03 20:28:20

回答

3

發現其解決方法!

沒有

setView(layout, 0, 0, 0, 0); 

從dialogFragment建設者,但AlertDialog有這個方法..所以不用返回

builder.create(); 

做到這一點

//dont set view for builder! 
AlertDialog result = builder.create(); 
result.setView(view, 0, 0, 0, 0); 
return result; 
+0

哦,你的Android版本不像我的那麼隨機,所以不幸的是,隨機問題的隨機解決方案並不適合我。幸運的是,這些日子裏有足夠可怕的黑色酒吧。 – samosaris 2012-12-03 20:43:31

3

我不是那麼熟悉DialogFragments,但是,與常規對話框要做到這一點,你通常會選擇R.value.styles並添加:

<style name="myDialog" parent="@android:style/Theme.Dialog"> 
    <item name="android:buttonStyle">@style/Button</item> 
    <item name="android:windowBackground">@android:color/transparent</item> 
    <item name="android:windowAnimationStyle">@style/PauseDialogAnimation</item> 
    <item name="android:windowNoTitle">true</item> 
    <item name="android:windowIsFloating">true</item> 
    <item name="android:windowContentOverlay">@null</item> 
    <item name="android:textColor">#FFFFFFFF</item> 
    <item name="android:shadowColor">#cdc9c9</item> 
    <item name="android:shadowDx">0</item> 
    <item name="android:shadowDy">-1</item> 
    <item name="android:shadowRadius">0.5</item> 
</style> 

並設置您的對話框有階梯myDialog。但是,使用dialogFragments時,似乎需要在初始化時定義樣式,DialogFragment.STYLE_NO_FRAME;,希望有所幫助,但我知道這不是完整答案。

1

不久前我有類似的問題。問題在於Builder不允許你玩填充對話框。我的工作是圍繞創建AlertDialog的子類:

final class PaddinglessDialog extends AlertDialog { 
    public PaddinglessDialog(Context context, int theme) { 
     super(context, theme); 
    } 
} 

然後我又繼續使用它像這樣:

PaddinglessDialog alertDialog = new PaddinglessDialog(this, android.R.style.Theme_Holo_Light_Panel); 
View layout = LayoutInflater.from(this).inflate(R.layout.my_dialog_layout, ...); 
alertDialog.setView(layout, 0, 0, 0, 0); 
alertDialog.setCanceledOnTouchOutside(false); 
... 
dialog = alertDialog; 
3

這是什麼工作對我來說:

dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); 
+0

請說_why_它爲你工作。 – 2012-12-18 02:38:39

+0

簡單地這工作去除'DialogFragment'的上邊界。 – 2014-09-30 10:41:47