2017-10-14 148 views
1

我想在Android中爲對話窗口添加邊框。使用下列行將邊框添加到android中的對話框窗口

<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item 
     android:left="5dp" 
     android:right="5dp" 
     android:bottom="5dp" 
     android:top="5dp"> 
    <shape android:shape="rectangle"> 
     <solid android:color="#ffbf80" /> 
     <corners android:radius="30dp" /> 
     <padding 
     android:left="1dp" 
     android:top="1dp" 
     android:right="1dp" 
     android:bottom="1dp" /> 
    </shape> 
    </item> 
</layer-list> 

要添加邊框對話框中可繪製添加圓角的對話窗口,我試圖通過增加行程元件如下

<shape android:shape="rectangle"> 
    <solid 
    android:color="#ffbf80" /> 
    <stroke android:color="#ff3300" android:width="2dp"/> 
    <corners 
    android:radius="30dp" /> 
    <padding 
    android:left="1dp" 
    android:top="1dp" 
    android:right="1dp" 
    android:bottom="1dp" /> 
</shape> 

但是,這是建立對話框中的每個元素(如textview,圖標,按鈕)的邊框也是如此。我只想要一個窗口的邊框。

我已創建使用AlertDialog.Builder在Java代碼中的警告對話框中,

myDialogBuilder=new AlertDialog.Builder(new 
ContextThemeWrapper(getActivity(), 
R.style.CustomDialog)) 
.setTitle(title.getText().toString()) 
.setMessage(myText) 
.setPositiveButton("Done", new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, int which) 
       { 
       getDialog().dismiss(); 
       } 
       }); 

myDialog=myDialogBuilder.create(); 

myDialog.setOnShowListener(new DialogInterface.OnShowListener() { 
       @Override 
       public void onShow(DialogInterface dialog) { 
        Window view=((AlertDialog)dialog).getWindow(); 
        view.setBackgroundDrawable(new 
        ColorDrawable(Color.TRANSPARENT)); 
       ... 
       } 
}); 

我在styles.xml下面的對話框

<style name="CustomDialog" parent="@style/ThemeOverlay.AppCompat.Dialog"> 
    <item name="android:backgroundDimEnabled">true</item> 
    <item name="android:background">@drawable/dialog_bg</item> 
    <item name="android:textColorPrimary">@color/my_textcolor</item> 
</style> 

請幫助我瞭解我應該做什麼改變,以便顯示警告對話框邊框。

感謝

回答

1

我能夠通過在代碼中進行以下更改來解決我的警報對話框的邊框問題。

而不是創建對話框時指定的主題,我加入了繪製資源的對話窗口中dialog.setOnShowListener()

Window view=((AlertDialog)dialog).getWindow(); 
view.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); 
// to get rounded corners and border for dialog window 
view.setBackgroundDrawableResource(R.drawable.dialog_bg); 

我只需要在我的警告對話框標題,消息和一個按鈕。所以我使用標準的AlertDialog.Builder創建它的方式,儘管它也可以使用自定義佈局文件並設置視圖來完成。

0

我在我的應用程序圓角對話,但我用自定義對話框與自定義佈局,而不是標準的AlertDialog,當然這需要更多的工作。

  • 定義您MyDialogStyle在styles.xml有:
    <item name="android:background">@drawable/my_rounded_background</item>

  • 在對話框佈局XML的根項目添加屬性:
    style="@style/MyDialogStyle"

  • 在對話框類的onCreate加:

getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));

+0

感謝您的回覆。我已經添加了您提到的三件事,但唯一的區別是我在代碼中創建了警報對話框而不是使用自定義佈局。這就是爲什麼它不工作? – Sri

+0

如果您仍在使用「myDialogBu​​ilder = new AlertDialog.Builder(..)」,那麼您不會創建自定義對話框,並且您爲自定義對話框創建的類不執行任何操作,因爲您沒有使用它。將其更改爲「myDialog = new MyCustomDialog()」或任何您稱爲自定義對話框類的內容。創建自定義對話框意味着創建一個擴展Dialog Android類的Java類。 –

+0

我認爲對於api 11及以上版本,我們可以使用AlertDialog.Builder創建具有自定義樣式的警告對話框。請檢查此鏈接https:// stackoverflow。COM /問題/ 14770400/Android的alertdialog造型。 我已經能夠爲警報對話框設置背景顏色和圓角,但它是單獨的行程不起作用。當我在可繪製文件中添加描邊形狀時,標題,按鈕,消息和警報對話框中的所有內容都會顯示一個圓形邊框。我只需要一個用於警報對話框的單個邊框。 – Sri