1

我想为所有 alertDialog 实例创建一个不同的主题。我需要自己的标题视图而不是通常的黑色标题背景。所有文本都应为蓝色,并将 alertDialog 的边缘设置为圆形。

是否可以为警报对话框创建我们自己的主题,使用任何样式或创建一个扩展的类AlertDialog.Builder?我的所有 alertDialog 实例都需要一个共同的主题或样式。我在很多地方都使用 alertDialog - 一个用于 singleChoice 项目,一个用于 ArrayAdapter。

我的带有数组适配器的 alertDialog:

String[] items = {"Edit profile","Change user","Change password","Logout"};
ArrayAdapter<String> adapter = new ArrayAdapter<String>(Loged.this,
                    R.layout.my_spinner_layout, items);

settingMenu.setAdapter(adapter, listener); 

我的 alertDialog 带有单选项目:

alertDelete = new AlertDialog.Builder(getParent());
                    alertDelete.setTitle("Delete");
                    alertDelete.setCancelable(true);
                    CharSequence[] choice = {"this user","All user"};
                    alertDelete.setSingleChoiceItems(choice, 0,

对于我所有的 alertDialog,我需要一个共同的主题,例如:

在此处输入图像描述

4

5 回答 5

1

我通过创建一个扩展 Dialog 的类解决了我的问题,并创建了自己的函数。例如 setMessage、setTitle、setPositiveButton、setNegativeButton 等。

但我对如何替换 setAdapter() 和 setSingleChoice() 感到困惑。

于 2013-05-14T07:30:00.817 回答
1

请检查此链接。如果您在应用程序的许多情况下重用 alertDialog,这里将创建我自己的 alertDialog 类及其简单方法

如何为 AlertDialog 创建 setAdapter()

于 2013-06-26T04:17:59.293 回答
0

这是对话框的一个示例:

button = (Button) findViewById(R.id.button1);

            button.setOnClickListener(new OnClickListener() {

              @Override
              public void onClick(View arg0) {

                // custom dialog
                final Dialog dialog = new Dialog(context);
                dialog.setContentView(R.layout.custom);
                dialog.setTitle("Give a Title...");

                // set the custom dialog components - text, image and button
                TextView text = (TextView) dialog.findViewById(R.id.text);
                text.setText("Put here any custom text!");
                ImageView image = (ImageView) dialog.findViewById(R.id.image);
                image.setImageResource(R.drawable.ic_launcher);

                Button dialogButton = (Button) dialog.findViewById(R.id.ButtonOK);
                // if button is clickedthen dialog will closed
                dialogButton.setOnClickListener(new OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        dialog.dismiss();
                    }
                });

                dialog.show();
              }
            });

自定义警报对话框

    AlertDialog.Builder builder;
    AlertDialog alertDialog;
    Context mContext;
    LayoutInflater inflater = (LayoutInflater)mContext.getSystemService(LAYOUT_INFLATER_SERVICE);
    View urlayoutfile = inflater.inflate(R.layout.custom_dialog_xmlfile,(ViewGroup)findViewById(R.id.Yourlayout_id));
    builder = new AlertDialog.Builder(this);
    builder.setView(urlayoutfile);
    alertDialog = builder.create(); 
    alertDialog.show();
于 2013-05-14T04:12:06.663 回答
0

要使用特定样式,请使用

ctw = new ContextThemeWrapper(this, R.style.MyStyle);
new AlertDialog.Builder(ctw)
    .setTitle(...)
于 2013-05-14T04:27:40.597 回答
0

您可以将布局用作不同的主题、样式、背景

自定义对话框.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/relativeLayout1"
    style="@android:style/Theme.Black.NoTitleBar.Fullscreen"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

    <LinearLayout
        android:id="@+id/layoutsample"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:orientation="vertical" >

        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="@drawable/dialoghdrbg"
            android:orientation="horizontal" >

            <ImageView
                android:id="@+id/dialogheaderimage1"
                android:layout_width="50dp"
                android:layout_height="48dp" 
                android:scaleType="fitXY"
                />

            <TextView
                android:id="@+id/dialogheadertext1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center_vertical|right"
                android:layout_marginLeft="1dp"
                android:gravity="center_vertical|right"
                android:textColor="#000000"
                android:textSize="25dp"
                android:textStyle="bold" />
        </LinearLayout>

        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:background="@drawable/dialogcontentbg"
            android:orientation="vertical" android:gravity="center">

            <TextView
                android:id="@+id/dialogmessgetext1"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:textColor="#ffffff"
                android:textSize="23dp" 
                android:text="" 
                android:gravity="center" 
                />


            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center|center_horizontal"
                android:gravity="center|center_horizontal"
                android:layout_marginTop="20dip" 
                android:orientation="horizontal">

              <Button
                    android:id="@+id/dialogokbutton1"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginRight="15dp"
                    android:background="@drawable/buttonanimation"
                    android:text="Retry"
                    android:textSize="20dp"
                    android:textStyle="bold" />

                <Button
                    android:id="@+id/dialogcancelbutton1"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginLeft="15dp"
                    android:background="@drawable/buttonanimation"
                    android:text="Report"
                    android:textSize="20dp"
                    android:textStyle="bold" />
            </LinearLayout>
        </LinearLayout>
    </LinearLayout>

</RelativeLayout>

customDialog.java

final Dialog favDialog = new Dialog(Myclass.this,
            android.R.style.Theme_Translucent_NoTitleBar_Fullscreen);


favDialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
    favDialog.getWindow().setFlags(
            WindowManager.LayoutParams.FLAG_FULLSCREEN,
            WindowManager.LayoutParams.FLAG_FULLSCREEN);

    favDialog.setContentView(R.layout.reloadurlpopuplayout);

    favDialog.setCancelable(false);

    ImageView dialogImage = (ImageView) favDialog
            .findViewById(R.id.dialogheaderimage1);

    dialogImage.setBackgroundResource(R.drawable.questionmark);

    TextView dialogMesage = (TextView ) favDialog
            .findViewById(R.id.dialogmessgetext1);
    TextView dialogHeader = (TextView) favDialog
            .findViewById(R.id.dialogheadertext1);

    String descText = getString(R.string.RetryReportMessage);


    dialogMesage.setBackgroundColor(0x00000000);

    dialogMesage.setText(descText);

    dialogHeader.setText(R.string.BrockenLinkHeader);

    try {
        favDialog.show();
    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
于 2013-05-14T07:08:09.043 回答