Android 跨多个 Activity 的视图(对话框/布局)
Android View (Dialog / Layout) across multiple Activities
我创建了一个要用作错误消息的视图。
如果 phone 没有互联网连接(移动数据或 wifi),我想在我的应用程序中显示一条错误消息,以便用户知道从那时起的所有内容都将在本地保存(不是在服务器)。
这里的问题是,即使用户从一个 activity 切换到另一个,我也希望这条消息保持不变。
我尝试在 WindowManager 上使用 Dialog 和 LinearLayout。
没用。
这就是我所做的。
public void noConnectionLayout()
{
LinearLayout mainLayout = new LinearLayout (this.ApplicationContext);
mainLayout.Clickable = false;
mainLayout.Focusable = false;
mainLayout.FocusableInTouchMode = false;
mainLayout.LongClickable = false;
mainLayout.SetBackgroundColor (Android.Graphics.Color.Red);
mainLayout.Orientation = Orientation.Vertical;
var spaceFromTopPara = (int) (65 * this.Resources.DisplayMetrics.Density);
var layoutHeight = (int)(25 * this.Resources.DisplayMetrics.Density);
WindowManagerLayoutParams windowLayoutParams = new WindowManagerLayoutParams (
ViewGroup.LayoutParams.MatchParent,
layoutHeight,
WindowManagerTypes.SystemError,
WindowManagerFlags.NotTouchModal | WindowManagerFlags.NotFocusable,
Format.Translucent);
windowLayoutParams.ScreenOrientation = Android.Content.PM.ScreenOrientation.Portrait;
windowLayoutParams.Gravity = GravityFlags.Top;
windowLayoutParams.Y = spaceFromTopPara;
TextView textNoConnectionMesg = new TextView (this);
textNoConnectionMesg.Text = "No Connection available.";
textNoConnectionMesg.SetTypeface (this.latoFont, TypefaceStyle.Normal);
textNoConnectionMesg.LayoutParameters = new ViewGroup.LayoutParams (ViewGroup.LayoutParams.MatchParent, ViewGroup.LayoutParams.MatchParent);
textNoConnectionMesg.Gravity = GravityFlags.Center;
textNoConnectionMesg.SetTextSize (Android.Util.ComplexUnitType.Dip, 14f);
textNoConnectionMesg.SetBackgroundColor (Android.Graphics.Color.Transparent);
textNoConnectionMesg.SetTextColor (Android.Graphics.Color.White);
mainLayout.AddView (textNoConnectionMesg);
WindowManager.AddView (mainLayout, windowLayoutParams);
}
当 activity 改变时,视图就消失了。
我可以在这里做什么?
感谢您的宝贵时间。
对话框本质上与活动相关联。您的用户甚至可以通过显示的对话框在活动之间导航,这似乎很奇怪。如果您想允许导航 和 在每个屏幕上显示连接状态对话框,您需要在例如您所有其他 Activity 扩展的 BaseActivity 的 onStart。
我创建了一个要用作错误消息的视图。
如果 phone 没有互联网连接(移动数据或 wifi),我想在我的应用程序中显示一条错误消息,以便用户知道从那时起的所有内容都将在本地保存(不是在服务器)。
这里的问题是,即使用户从一个 activity 切换到另一个,我也希望这条消息保持不变。
我尝试在 WindowManager 上使用 Dialog 和 LinearLayout。 没用。
这就是我所做的。
public void noConnectionLayout()
{
LinearLayout mainLayout = new LinearLayout (this.ApplicationContext);
mainLayout.Clickable = false;
mainLayout.Focusable = false;
mainLayout.FocusableInTouchMode = false;
mainLayout.LongClickable = false;
mainLayout.SetBackgroundColor (Android.Graphics.Color.Red);
mainLayout.Orientation = Orientation.Vertical;
var spaceFromTopPara = (int) (65 * this.Resources.DisplayMetrics.Density);
var layoutHeight = (int)(25 * this.Resources.DisplayMetrics.Density);
WindowManagerLayoutParams windowLayoutParams = new WindowManagerLayoutParams (
ViewGroup.LayoutParams.MatchParent,
layoutHeight,
WindowManagerTypes.SystemError,
WindowManagerFlags.NotTouchModal | WindowManagerFlags.NotFocusable,
Format.Translucent);
windowLayoutParams.ScreenOrientation = Android.Content.PM.ScreenOrientation.Portrait;
windowLayoutParams.Gravity = GravityFlags.Top;
windowLayoutParams.Y = spaceFromTopPara;
TextView textNoConnectionMesg = new TextView (this);
textNoConnectionMesg.Text = "No Connection available.";
textNoConnectionMesg.SetTypeface (this.latoFont, TypefaceStyle.Normal);
textNoConnectionMesg.LayoutParameters = new ViewGroup.LayoutParams (ViewGroup.LayoutParams.MatchParent, ViewGroup.LayoutParams.MatchParent);
textNoConnectionMesg.Gravity = GravityFlags.Center;
textNoConnectionMesg.SetTextSize (Android.Util.ComplexUnitType.Dip, 14f);
textNoConnectionMesg.SetBackgroundColor (Android.Graphics.Color.Transparent);
textNoConnectionMesg.SetTextColor (Android.Graphics.Color.White);
mainLayout.AddView (textNoConnectionMesg);
WindowManager.AddView (mainLayout, windowLayoutParams);
}
当 activity 改变时,视图就消失了。
我可以在这里做什么?
感谢您的宝贵时间。
对话框本质上与活动相关联。您的用户甚至可以通过显示的对话框在活动之间导航,这似乎很奇怪。如果您想允许导航 和 在每个屏幕上显示连接状态对话框,您需要在例如您所有其他 Activity 扩展的 BaseActivity 的 onStart。