当使用Theme.Sherlock.Light.DarkActionBar(或Theme.Holo.Light.DarkActionBar,没有区别)时,默认情况下,例如在选择文本时出现的ActionMode(或“contextual ActionBar”)的样式与标准深色主题中的样式相同,即深蓝色与轻行动图标。

但是,当您尝试在对话框中选择文本时(该主题为浅色样式,与黑色的ActionBar相比),将显示为类似于浅色主题(白色背景)的ActionMode。问题在于,它的 Action 图标不是应该的暗,而是亮的,从而使它们实际上不可见。

好像背景是从浅色主题获取的(因为有浅色对话框),而图标是从深色主题获取的。这是Light.DarkActionBar主题中的错误吗?我可以做些什么吗?

最佳答案

最近两天以来,我一直在同一个问题作斗争。最后,我想出了一种解决方法!

我正在将DialogFragmentAlertDialog对象一起使用。在onCreateDialog()方法中,我们要做的就是获取父 Activity 的上下文,并将其主题再次设置为Theme.Light

@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
    //get the parent activity context and set it's theme again.
    Context ctx = getActivity();
    ctx.setTheme(android.R.style.Theme_Holo_Light);
    AlertDialog.Builder builder = new AlertDialog.Builder(ctx);
    LayoutInflater inflater = (LayoutInflater) ctx.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View view = inflater.inflate(R.layout.your_dialog_layout, null, false);
    builder.setView(view);

    //your other code for the dialog
    //

    return builder.create();

现在EditText的Contextual ActionBar中的图标具有正确的颜色。

09-04 18:47
查看更多