如何为alertDialog创建自己的主题?

时间:2013-05-14 04:02:04

标签: android android-alertdialog android-styles

我想为所有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,我需要一个共同的主题,例如:

enter image description here

5 个答案:

答案 0 :(得分:1)

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

但令人困惑的是如何替换setAdapter()和setSingleChoice()。

答案 1 :(得分:1)

请检查此链接。这里我正在创建自己的alertDialog类 如果你在应用程序的许多情况下重用alertDialog,它是一个简单的方法

how Create setAdapter() for a AlertDialog

答案 2 :(得分:0)

这里有一个For Dialog示例:

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

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

答案 3 :(得分:0)

要使用特定样式,请使用

ctw = new ContextThemeWrapper(this, R.style.MyStyle);
new AlertDialog.Builder(ctw)
    .setTitle(...)

答案 4 :(得分:0)

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

<强> customdialog.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();
    }