具有自定义背景颜色的Android AlertDialog setMultiChoiceItems

我得到了这个alertDialog,有多项选择:

builder.setTitle(R.string.layer_options_title) .setMultiChoiceItems(availableOptions, selectedLayerOptions, new DialogInterface.OnMultiChoiceClickListener() { ... }); 

哪里

 availableOptions = getApplicationContext().getResources().getStringArray(R.array.layer_options); 

来自

  Should have green background Should have yellow background Should have orange background Should have blue background  

有没有办法让这些多选项具有背景颜色?

是的,有办法。 将您的复选框放在布局中,并给出布局背景颜色。 这就是我能做到的:

 AlertDialog.Builder alert = new AlertDialog.Builder(this); LinearLayout mainLayout = new LinearLayout(this); mainLayout.setOrientation(LinearLayout.VERTICAL); LinearLayout layout1 = new LinearLayout(this); layout1.setOrientation(LinearLayout.HORIZONTAL); CheckBox cb1 = new CheckBox(getApplicationContext()); cb1.setText("Easy"); layout1.addView(cb1); layout1.setBackgroundColor(Color.BLUE); layout1.setMinimumHeight(50); LinearLayout layout2 = new LinearLayout(this); layout2.setOrientation(LinearLayout.HORIZONTAL); layout2.addView(new TextView(this)); CheckBox cb2 = new CheckBox(getApplicationContext()); cb2.setText("Normal"); layout2.addView(cb2); layout2.setBackgroundColor(Color.CYAN); layout2.setMinimumHeight(50); LinearLayout layout3 = new LinearLayout(this); layout3.setOrientation(LinearLayout.HORIZONTAL); CheckBox cb3 = new CheckBox(getApplicationContext()); cb3.setText("Hard"); layout3.addView(cb3); layout3.setBackgroundColor(Color.GREEN); layout3.setMinimumHeight(50); mainLayout.addView(layout1); mainLayout.addView(layout2); mainLayout.addView(layout3); alert.setTitle("Custom alert demo"); alert.setView(mainLayout); alert.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.cancel(); } }); alert.setPositiveButton("Done", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { Toast.makeText(getBaseContext(), "done", Toast.LENGTH_SHORT).show(); } }); alert.show(); 

结果:

结果

首先,我在代码中看到了一个主要布局(垂直)。 然后,对于每个复选框,我创建了一个水平布局。 在这种情况下,您可以使用元素的颜色和字体(复选框,项目等)。

尝试这个:

  AlertDialog.Builder builder1 = new AlertDialog.Builder(MainActivity.this); builder1.setTitle("Some Titel?"); builder1.setCancelable(true); List listItems = new ArrayList(); listItems.add(Html.fromHtml("ipohne")); listItems.add(Html.fromHtml("windows")); listItems.add(Html.fromHtml("samsung")); final CharSequence[] charSequenceItems = listItems.toArray(new CharSequence[listItems.size()]); builder1.setMultiChoiceItems(charSequenceItems, null, null); builder1.setPositiveButton("Weiter", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { dialog.cancel(); } }); builder1.setNegativeButton("Abbrechen", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { dialog.cancel(); } }); AlertDialog alert11 = builder1.create(); alert11.show(); 

截图