我想创建一个底部对话框,其中将显示我提供的文本,并且可以随时隐藏并显示它。该对话框将显示在所有活动中。例如,如果应用程序当前未连接到服务器,我将在底部对话框中显示“无连接”,并且此对话框将在屏幕上的任何活动中显示。如何制作这个对话框,我尝试用XML制作它,但是我需要在每个活动中编写它的show / hide方法,这是一件乏味的工作。 这是一张图像,显示了我要创建的底部对话框。
答案 0 :(得分:1)
创建一个易于显示在所有活动上的自定义对话框。可以自定义对话框作为图片中的样式。
这里是一个示例,requestFeature()
必须在添加内容之前被调用,其他设置必须在setContentView()
之后。
public class YOUR_DIALOG extends Dialog {
private String mText;
public YOUR_DIALOG(Context context, String text) {
super(context);
requestWindowFeature(Window.FEATURE_NO_TITLE);
mText = text;
}
@Override
public void onStart() {
super.onStart();
Window dialogWindow = getWindow();
dialogWindow.getAttributes().width = android.widget.ListPopupWindow.MATCH_PARENT;
dialogWindow.setGravity(Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL);
dialogWindow.setBackgroundDrawable(new ColorDrawable(0xffff7320));
dialogWindow.clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
}
// Everything else remains the same, as is the case with the normal dialog box.
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.your_dialog_layout);
textview = findViewById(...);
textview.setText(mText);
}
}
和布局
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:id="@+id/textview"
android:textAppearance="@android:style/TextAppearance.Material.Medium"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:padding="10dp"
android:drawablePadding="10dp"
android:drawableLeft="@mipmap/ic_launcher"
android:textStyle="bold"
android:textColor="#fff"/>
</LinearLayout>
您的活动
new YOUR_DIALOG(this,"Dialog").show();