3

在此处输入图像描述

在我的应用程序中,我使用带有圆角矩形主题的警报对话框。但它有警报对话框矩形和我的主题。我的问题是如何替换像对话框这样的警报对话框边框。我只想用自己的主题显示这个设置项。

我想以这种方式输出而不是上面的主题:

在此处输入图像描述

主要活动:

AlertDialog.Builder alertSeverity = new AlertDialog.Builder(
           getActivity(), R.style.Theme_CustomDialog);
     alertSeverity.setTitle("Severity Status");
CharSequence[] severityStatus = { "Low-Severity",
           "Middle-Severity", "High-Severity" };
     alertSeverity.setItems(severityStatus,
           new DialogInterface.OnClickListener() {        

              @Override
              public void onClick(DialogInterface dialog, int which) {
                }
                 });

我的主题:

<style name="Theme.CustomDialog" parent="android:style/Theme.Dialog">
    <item name="android:windowBackground">@drawable/shapedialogtheme</item>
<item name="android:windowFrame">@null</item>

</style>

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"  >

<solid android:color="#565656" />

<stroke
    android:width="5dp"
    android:color="#ffff8080" />

<corners android:radius="30dp" />

<padding
    android:bottom="10dp"
    android:left="10dp"
    android:right="10dp"
    android:top="10dp" />
<size 
    android:width="150dp"
    android:height="150dp"/>

</shape>

在此处输入图像描述

4

6 回答 6

6

使用对话框而不是警报对话框。

创建要在对话框中显示的自定义布局并在对话框中设置内容。在对话框中应用此主题android.R.style.Theme_Translucent_NoTitleBar将隐藏边框。

这是示例代码。

Dialog dialog = new Dialog(activity.this, android.R.style.Theme_Translucent_NoTitleBar);

// your layout file
dialog.setContentView(R.layout.dialog);

// for hide title 
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);

//for set title
dialog.setTitle("Custom Dialog");


dialog.show();

更新:

刚刚在 AlertDialog 中尝试过。

AlertDialog.Builder alertSeverity = new AlertDialog.Builder(
           getActivity(), android.R.style.Theme_Translucent_NoTitleBar);
于 2013-08-12T07:06:59.590 回答
2

尝试下一个解决方案:

从对话框扩展,并使用 setContentView 设置要使用的确切视图。

alertDialog 用于某些功能。并不是说它可以做任何你想做的事情。

也许您可以使用对话框而不是扩展,然后使用 setContentView。

于 2013-07-14T11:47:05.303 回答
2

为此,您需要设计一个自定义对话框:

**dialog.xml**

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >

<TextView
    android:id="@+id/txt_view_SaveAs"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/save_as"
    android:layout_margin="10dp"
    android:textSize="25dp" />

<EditText
    android:id="@+id/edit_txt_SaveAs"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:minWidth="300dp"
    android:maxLines="1"
    android:textSize="20dp"
    android:maxLength="50"
    android:layout_margin="10dp"
    android:text="@string/save_as" />

<LinearLayout 
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:layout_margin="10dp"
    android:weightSum="1.0" >

    <Button
        android:id="@+id/btn_SaveAs"
        android:layout_width="0dp"
        android:layout_height="50dp"
        android:layout_weight="0.5"
        android:minWidth="100dp"
        android:textSize="20dp"
        android:text="@string/save"
        android:layout_margin="3dp" />

    <Button
        android:id="@+id/btn_Cancel"
        android:layout_width="0dp"
        android:layout_height="50dp"
        android:layout_weight="0.5"
        android:minWidth="100dp"
        android:textSize="20dp"
        android:text="@string/cancel"
        android:layout_margin="3dp" />

</LinearLayout>

然后,您可以为特定对话框创建不同的类,如下所示:

public class SaveDialog extends Dialog implements android.view.View.OnClickListener {

private Context context;

private TextView txt_view_SaveAs;
private EditText edit_txt_SaveAs;
private Button btn_SaveAs;
private Button btn_Cancel;

public SaveDialog(Context context) {
    super(context);
    this.context = context;
    // TODO Auto-generated constructor stub
}

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.dialog);

    setCancelable(true); // Setting the Dialog to be Cancellable on Back Key Press

    txt_view_SaveAs = (TextView) findViewById(R.id.txt_view_SaveAs);
    edit_txt_SaveAs = (EditText) findViewById(R.id.edit_txt_SaveAs);
    btn_SaveAs = (Button) findViewById(R.id.btn_SaveAs);
    btn_SaveAs.setOnClickListener(this);
    btn_Cancel = (Button) findViewById(R.id.btn_Cancel);
    btn_Cancel.setOnClickListener(this);
}

@Override
public void onClick(View v) {
        // Write code for all the buttons on click methods
}
}

然后,您可以使用以下代码在主类中调用自定义对话框:

SaveDialog save_dialog = new SaveDialog(saving_activity);
save_dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
save_dialog.show();
于 2013-08-14T05:45:56.470 回答
2

您不能从警报对话框中删除边框。

用这个

public class ActivityIndicator extends Dialog implements android.view.View.OnClickListener{
protected static final String TAG = InfoIndicator.class.getName();
ImageView close;
WebView info;

      public ActivityIndicator (Context context,String information) 
       {
          super(context, android.R.style.Theme_Translucent_NoTitleBar);
          requestWindowFeature(Window.FEATURE_NO_TITLE);
          setContentView(R.layout.info);
          setCancelable(true);
           }
}

并尝试以下功能以显示、隐藏和清除对话框

private static ActivityIndicator activityIndicator;

public static void hideActivityViewer() {
    if (activityIndicator != null) {
        activityIndicator.dismiss();
    }
    activityIndicator = null;
}

public static void showActivityViewer(Context context) {
    if (activityIndicator == null)
    {
        activityIndicator = new ActivityIndicator(context);
    }
    activityIndicator.show();

}
public static void clearDialogs()
{
    activityIndicator = null;
}
于 2013-08-14T06:34:59.723 回答
2

使用 Dialog 而不是 AlertDialog

Dialog callAlert = new Dialog(LoginActivity.this,R.style.CutomDialog);  
callAlert.setContentView(R.layout.call);

样式.xml

<style name="CutomDialog" parent="android:style/Theme.Dialog">
    <item name="android:windowBackground">@android:color/transparent</item>
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowAnimationStyle">@style/Animations.DialogAnimation</item>
</style>

调用.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_margin="20dp"
 android:background="@drawable/call_bg"></RelativeLayout>

call_bg.xml

<shape xmlns:android="http://schemas.android.com/apk/res/android" >
<stroke android:width="3dp" android:color="#A20B3F" />

<corners android:bottomRightRadius="4dp" android:bottomLeftRadius="4dp" 
 android:topLeftRadius="4dp" android:topRightRadius="4dp"/> 

主要的是您必须使布局 backgrpund 透明,否则您将无法获得所需的输出。

于 2013-08-13T05:57:52.773 回答
1

你可以自己使用popwindow来获得更多风格

于 2013-08-16T00:37:14.640 回答