更改弹出菜单标题样式

时间:2016-05-20 07:04:05

标签: android android-styles

我有一个android.View.ContextMenu,它在点击recyclerview中的项目后会弹出。它看起来像这样:

Screenshot

我的问题是,我不知道如何更改标题的颜色(此处:12345678)和分隔符。

我尝试创建一个PopupMenuStyle,但我只能更改项目,而不是标题。我使用Theme.AppCompat.Light.DarkActionBar作为我的主题的父级

编辑1:

有了这个,我可以将headertextcolor设置为主文本颜色,但无论我添加哪些项目,分隔符仍然保持蓝色。

<style name="AppCompatAlertDialogStyle" parent="Theme.AppCompat.Light.Dialog.Alert">
...
</style>

编辑2:

上下文菜单创建

@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
     super.onCreateContextMenu(menu, v, menuInfo);
     MenuInflater inflater = getActivity().getMenuInflater();
     inflater.inflate(R.menu.my_menu, menu);

     menu.setHeaderTitle("12345678");
}

定型

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
</style>

<style name="AppTheme.NoActionBar" parent="@style/AppTheme">
    <item name="windowActionBar">false</item>
    <item name="windowNoTitle">true</item>

    <item name="android:alertDialogTheme">@style/AppCompatAlertDialogStyle</item>
</style>

<style name="AppCompatAlertDialogStyle" parent="Theme.AppCompat.Light.Dialog.Alert">
     <!-- I tried a lot here, but nothing works -->
</style>

1 个答案:

答案 0 :(得分:0)

更改分隔线颜色

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));

更改文字标题颜色

public static void brandAlertDialog(AlertDialog dialog) {
    try {
        Resources resources = dialog.getContext().getResources();
        int color = resources.getColor(...); // your color here

        int alertTitleId = resources.getIdentifier("alertTitle", "id", "android");
        TextView alertTitle = (TextView) dialog.getWindow().getDecorView().findViewById(alertTitleId);
        alertTitle.setTextColor(color); // change title text color

        int titleDividerId = resources.getIdentifier("titleDivider", "id", "android");
        View titleDivider = dialog.getWindow().getDecorView().findViewById(titleDividerId);
        titleDivider.setBackgroundColor(color); // change divider color
    } catch (Exception ex) {
        ex.printStackTrace();
    }
}