如何将默认的ContextMenu样式设置为EditText?

时间:2012-09-24 13:37:38

标签: android android-dialog android-theme android-contextmenu


我对EditText的ContextMenu的样式有疑问。

我创建了新的Dialog:

Dialog newServerDialog = new Dialog(getContext(), R.style.CustomDialogStyleServerDetails);

newServerDialog.setContentView(newServerDialogLayout);
newServerDialog.setTitle(R.string.server_details_new_title_text);
newServerDialog.getWindow().setLayout(
    android.view.ViewGroup.LayoutParams.FILL_PARENT,
    android.view.ViewGroup.LayoutParams.WRAP_CONTENT);
newServerDialog.setCancelable(true);

这是 CustomDialogStyleServerDetails 样式:

<style name="CustomDialogStyleServerDetails" parent="@android:style/Theme.Dialog">
    <item name="android:background">@drawable/server_details_background_repeat</item>
    <item name="android:windowTitleStyle">@style/DialogWindowTitle</item>
</style>

DialogWindowTitle 样式

<style name="DialogWindowTitle">
    <item name="android:maxLines">1</item>
    <item name="android:scrollHorizontally">true</item>
    <item name="android:textAppearance">@style/customDialogTextAppearance</item>
    <item name="android:gravity">center_horizontal|center_vertical</item>
    <item name="android:background">@drawable/server_details_title_background_repeat</item>
</style>

Dialog看起来像我想要的:(对不起,但我还不能发布图片)

Dialog.png

但EditText的ContextMenu从我的对话框中获取样式

EditText's ContextMenu.png

有什么办法,如何将默认样式设置为ContextMenu?
我没有找到任何解决这个问题的方法 所有帮助将不胜感激! 谢谢。

编辑:我的解决方案:创建一个扩展Dialog的自定义类(称为DialogServer) 编辑#2:不,看起来这不是正确的解决方案。

我尝试了这个构造函数:

public DialogServer(Context context, int theme)

问题仍然存在

使用此构造函数:

public DialogServer(Context context)

contextmenu的风格没问题,但对话框的风格已经消失。

1 个答案:

答案 0 :(得分:2)

尝试使用自定义主题包装

 ContextThemeWrapper mTheme = new ContextThemeWrapper(this,
        R.style.CustomDialogStyleServerDetails);

代码段为: -

mInflater = (LayoutInflater) getBaseContext().getSystemService(
        LAYOUT_INFLATER_SERVICE);

ContextThemeWrapper mTheme = new ContextThemeWrapper(this,
        R.style.CustomDialogStyleServerDetails);

mView = mInflater.inflate(R.layout.YOUR_XML_LAYOUT_FILE, null);


mDialog = new Dialog(mTheme);
mDialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
mDialog.setContentView(this.mView);
mDialog.show();

希望这个解释很有用......