造型DialogFragment对话前冰淇淋三明治

War*_*zit 2 android android-dialogfragment

我正在尝试设置FragmentDialog4.0前的样式,因此它显示为4.0后.

我正在使用,ActionBarSherlock但我必须在冰淇淋三明治之前自己设计.

我希望看到以下内容:

在此输入图像描述

但是我得到了这个:

在此输入图像描述

所以基本上我希望它不填写整个屏幕.

我尝试了各种造型,但都没有成功,我已经达到了这样的程度,我希望有一些专家可以帮助我或指导我正确的方向

我的DialogFragment:

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //TODO Style 2.3 to look like 4.0
        int sdk = android.os.Build.VERSION.SDK_INT;
        if(sdk < android.os.Build.VERSION_CODES.HONEYCOMB) {
            setStyle(DialogFragment.STYLE_NO_TITLE, R.style.Pre_Honeycomb_Holo_Dialog);
        }
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        View view = null;
        int sdk = android.os.Build.VERSION.SDK_INT;
        if(sdk < android.os.Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
            view = inflater.inflate(R.layout.info_dialog_view, container);
        } else {
            view = inflater.inflate(R.layout.info_dialog_view_content, container);
            this.getDialog().setTitle(R.string.info_dialog_title);
        }
...
Run Code Online (Sandbox Code Playgroud)

基本上我正在建立冰淇淋三明治之前的标题布局,但内容区域是相同的.

我的holo_dialog_style:

<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android">
    <style name="Pre.Honeycomb.Holo.Dialog" parent="Theme.Sherlock.Light">
        <item name="android:windowTitleStyle">@null</item>
        <item name="android:windowFrame">@null</item>
        <item name="android:windowBackground">@drawable/panel_bg_holo_light</item>
        <item name="android:windowIsFloating">true</item>
        <item name="android:windowContentOverlay">@null</item>
        <item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item>
        <item name="android:windowSoftInputMode">stateUnspecified|adjustPan</item>
    </style>
</resources>
Run Code Online (Sandbox Code Playgroud)

Dav*_*vid 5

这是图书馆是你的朋友的众多案例之一!

我建议使用Android的Styled Dialogs.

它能够生成如下所示的对话框: 示例对话框

要使用它你需要做的是首先将它添加到Maven(如果你正在使用它):

<dependency>
    <groupId>eu.inmite.android.lib</groupId>
    <artifactId>android-styled-dialogs</artifactId>
    <version>1.0.1</version>
    <type>apklib</type>
</dependency>
Run Code Online (Sandbox Code Playgroud)

或者如果您使用Ant,那么您只想下载最新的jar.

现在,您只需设置主题即可使用您想要的主题.将以下内容添加到应用程序主题:

Holo Light

<item name="sdlDialogStyle">@style/DialogStyleLight.Custom</item>
Run Code Online (Sandbox Code Playgroud)

Holo Dark

<item name="sdlDialogStyle">@style/DialogStyleDark.Custom</item>
Run Code Online (Sandbox Code Playgroud)

您还可以添加以下样式以允许您根据需要进行自定义:

<style name="DialogStyleLight.Custom">
    <!-- anything can be left out: -->
    <item name="titleTextColor">@color/dialog_title_text</item>
    <item name="titleSeparatorColor">@color/dialog_title_separator</item>
    <item name="messageTextColor">@color/dialog_message_text</item>
    <item name="buttonTextColor">@color/dialog_button_text</item>
    <item name="buttonSeparatorColor">@color/dialog_button_separator</item>
    <item name="buttonBackgroundColorNormal">@color/dialog_button_normal</item>
    <item name="buttonBackgroundColorPressed">@color/dialog_button_pressed</item>
    <item name="buttonBackgroundColorFocused">@color/dialog_button_focused</item>
    <item name="dialogBackground">@drawable/dialog_background</item>
</style>
Run Code Online (Sandbox Code Playgroud)

一旦你拥有它,它很容易使用:

带有简单消息和关闭按钮的对话框

SimpleDialogFragment.createBuilder(this, getSupportFragmentManager()).setMessage(R.string.message).show();
Run Code Online (Sandbox Code Playgroud)

带标题,消息和关闭按钮的对话框

SimpleDialogFragment.createBuilder(this, getSupportFragmentManager()).setTitle(R.string.title).setMessage(R.string.message).show();
Run Code Online (Sandbox Code Playgroud)

带标题,消息和两个按钮的对话框

SimpleDialogFragment.createBuilder(this, getSupportFragmentManager()).setTitle(R.string.title).setMessage(R.string.message).setPositiveButtonText(R.string.positive_button).setNegativeButtonText(R.string.negative_button).show();
Run Code Online (Sandbox Code Playgroud)

有关其他示例,还提供了几个演示.