在我的应用程序中,我正在使用带圆角矩形主题的警告对话框。但它有alertdialog矩形和我的主题。我的问题是如何替换像对话框一样的警告对话框边框。我想显示此设置项目只有自己的主题。< / p>
我希望以这种方式输出而不是上面的主题:
主要活动:
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>
答案 0 :(得分:6)
使用Dialog而不是AlertDialog。
创建要在对话框中显示的自定义布局和对话框中的setContent。
在对话框中应用此主题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);
答案 1 :(得分:2)
尝试下一个解决方案:
从对话框扩展,并使用setContentView设置要使用的确切视图。
alertDialog用于某些功能。并不是说它可以做你想做的任何事情。
也许不是扩展你可以采取对话,然后使用setContentView。
答案 2 :(得分:2)
使用Dialog而不是AlertDialog
Dialog callAlert = new Dialog(LoginActivity.this,R.style.CutomDialog);
callAlert.setContentView(R.layout.call);
Style.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>
call.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透明,否则你将无法获得你想要的输出。
答案 3 :(得分: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();
答案 4 :(得分: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;
}
答案 5 :(得分:1)
你可以自己使用弹出窗口获得更多风格