2016-12-15 95 views
1

我想自定義我的警報對話框,但我似乎無法找到一種方法來更改文本消息和按鈕之間的分隔線。在Android中更改分隔線的顏色

我有這樣的習俗警告對話框主題在我的styles.xml:

<style name="AlertDialogCustom" parent="Theme.AppCompat.Light.Dialog.Alert"> 
    <item name="colorPrimary">@color/primary</item> 
    <item name="colorPrimaryDark">@color/maroon</item> 
    <item name="colorAccent">@color/primary</item> 
</style> 

這是警告對話框在我的活動:

final AlertDialog.Builder alertDialog = new AlertDialog.Builder(ChefMenuActivity.this,R.style.AlertDialogCustom); 



        final EditText edittext = new EditText(getApplicationContext()); 
        alertDialog.setMessage("Item name: " + menuList.get(position).getItemName() + "\n" + "Old quantity: " + menuList.get(position).getQty_left()); 
        alertDialog.setTitle("Change item quantity"); 

        edittext.setTextColor(Color.BLACK); 
        edittext.setHint("E.g.: 10"); 
        edittext.setHintTextColor(Color.GRAY); 
        edittext.setInputType(InputType.TYPE_CLASS_NUMBER); 

        alertDialog.setView(edittext); 

        alertDialog.setPositiveButton("REMOVE", new DialogInterface.OnClickListener() { 
         public void onClick(DialogInterface dialog, int whichButton) { 
          Toast.makeText(getApplicationContext(), "Not impemented yet", Toast.LENGTH_SHORT).show(); 
          dialog.cancel(); 
         } 
        }); 

        alertDialog.setNegativeButton("CANCEL", new DialogInterface.OnClickListener() { 
         public void onClick(DialogInterface dialog, int whichButton) { 
          Toast.makeText(getApplicationContext(), "Not impemented yet", Toast.LENGTH_SHORT).show(); 
          dialog.cancel(); 
         } 
        }); 

        alertDialog.setNeutralButton("UPDATE", new DialogInterface.OnClickListener() { 
         public void onClick(DialogInterface dialog, int whichButton) { 
          Toast.makeText(getApplicationContext(), "Not impemented yet", Toast.LENGTH_SHORT).show(); 
          dialog.cancel(); 
         } 
        }); 

        alertDialog.show(); 

我發現了一段代碼來改變標題和消息之間的分隔符:

   AlertDialog dialog = alertDialog.show(); 

       int titleDividerId = getResources().getIdentifier("titleDivider", "id", "android"); 
       View titleDivider = dialog.findViewById(titleDividerId); 
       if (titleDivider != null) 
        titleDivider.setBackgroundColor(Color.parseColor("#ff4444")); 

但它不適用於我的情況,因爲我想t o更改消息和按鈕之間的分隔線(如下圖所示)。

enter image description here

+3

它不是分隔線,而是編輯文本的背景 – RadekJ

+1

使用'editText.getBackground().setColorFilter(color,PorterDuff.Mode.SRC_IN);'改變edittext下劃線的顏色。 – Satendra

+0

非常感謝!我沒有意識到這是EditText的下劃線。它工作得很好! –

回答

0

正如前面所說,我想改變的不是分隔線,而是編輯文本的背景。我不得不使用editText.getBackground()。setColorFilter(color,PorterDuff.Mode.SRC_IN);改變edittext下劃線的顏色。

0

使用這個庫

https://github.com/danoz73/QustomDialog

QustomDialogBuilder qustomDialogBuilder = new QustomDialogBuilder(context). 
    setTitle("Set IP Address"). 
    setTitleColor("#FF00FF"). 
    setDividerColor("#FF00FF"). 
    setMessage("You are now entering the 10th dimension."). 

qustomDialogBuilder.show(); 

,或者你可以做到這一點

AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); 
builder.setTitle(R.string.dialog) 
     .setIcon(R.drawable.ic) 
     .setMessage(R.string.dialog_msg); 
    Dialog d = builder.show(); 
int dividerId = d.getContext().getResources().getIdentifier("android:id/titleDivider", null, null); 
View divider = d.findViewById(dividerId); 
divider.setBackgroundColor(getResources().getColor(R.color.my_color)); 

你可以找到更多的答案here

相關問題