我有一个不确定的android Progressbar,所以它只是一个旋转的圆形动画.
它开始显示正常,但是在我将其父级(overlayLayout)的可见性设置为“走”或“不可见”,然后稍后将其设置回可见时,看不到进度条吗?
<?xml version="1.0" enCoding="utf-8"?><relativeLayout xmlns:androID="http://schemas.androID.com/apk/res/androID" androID:ID="@+ID/overlayLayout" androID:layout_wIDth="match_parent" androID:layout_height="match_parent" androID:background="#ffffff" androID:gravity="center" > <TextVIEw androID:text="" androID:textAppearance="?androID:attr/textAppearanceLarge" androID:layout_wIDth="match_parent" androID:textAlignment="center" androID:layout_margin="10dp" androID:layout_height="wrap_content" androID:ID="@+ID/overlayLabelText" /> <Progressbar androID:ID="@+ID/overlayProgressbar" androID:layout_below="@ID/overlayLabelText" androID:layout_wIDth="match_parent" androID:layout_height="wrap_content" androID:foregroundGravity="center" androID:indeterminate="true" /></relativeLayout>
编辑:
我不确定是否包含该视图,但不确定进度条是否未呈现,或者不确定Progressbar视图本身是否被完全排除,因为我无法访问UI视图层次结构.
到目前为止,我已经尝试过:
Progressbar.Enabled = true; Progressbar.ForceLayout(); Progressbar.InvalIDate(); Progressbar.SetProgress(0, true); Progressbar.Visibility = VIEwStates.Visible;
但是还没有突破.
编辑2:
谢谢大家到目前为止的帮助.我已经切换到以编程方式创建布局-这是我的完整代码:
overlay = new relativeLayout(mainActivity){ LayoutParameters = new VIEwGroup.LayoutParams(VIEwGroup.LayoutParams.MatchParent, VIEwGroup.LayoutParams.MatchParent)};overlay.SetBackgroundcolor(color.WhiteSmoke);overlay.SetGravity(GravityFlags.Center);description = new TextVIEw(mainActivity){ LayoutParameters = new VIEwGroup.LayoutParams(VIEwGroup.LayoutParams.MatchParent, VIEwGroup.LayoutParams.WrapContent), Gravity = GravityFlags.Center, TextSize = 18, ID = 1523112};description.Text = "Waiting for GPS";description.SetBackgroundcolor(color.Aqua);progressbar = new Progressbar(mainActivity){ Indeterminate = true,};relativeLayout.LayoutParams lp = new relativeLayout.LayoutParams(VIEwGroup.LayoutParams.MatchParent, VIEwGroup.LayoutParams.WrapContent);lp.AddRule(LayoutRules.Below, description.ID);progressbar.LayoutParameters = lp;progressbar.SetBackgroundcolor(color.Red);container.AddVIEw(overlay);overlay.AddVIEw(description);overlay.AddVIEw(progressbar);
使用两种隐藏和显示方法:
private voID OnGpsUpdate(){ overlay.Visibility = VIEwStates.Gone;}private voID NoGPS(){ description.Text = "Waiting for GPS"; overlay.Visibility = VIEwStates.Visible;}
首次渲染布局时,在首次隐藏之前:
(我在不好的时候截图了,但是蓝色的绘图显示了圆圈在其加载动画周围移动的位置)
隐藏并再次显示后,进度条加载视图已存在,但不再有加载环:
我开始认为这可能是我的AndroID模拟器有问题吗?不,在我的实体电话上测试时,同样的问题.文本视图仍然显示正常,只是进度条不显示?
解
我没有完全理解它,因为除了progressbar之外,其他所有功能似乎都可以正常工作,但是一种解决方案来自将可见性调用包装在RunOnUIThread()调用中.
解决方法:
几点
根据问题的描述方式,您需要显示用于隐藏/显示overlayLayout的代码段
推荐建议
如果您只关心进度条在隐藏/显示方面的行为,则无需使用此代码段:
Progressbar.Enabled = true;Progressbar.ForceLayout();Progressbar.InvalIDate();Progressbar.SetProgress(0, true);Progressbar.Visibility = VIEwStates.Visible;
您只需要控制ID为overlayLayout的根布局即可
private relativeLayout overlayLayout;@OverrIDeprotected voID onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentVIEw(R.layout.activity_example); // Instantiate the layout overlayLayout = findVIEwByID(R.ID.overlayLayout); // Do the logic how you inflate/show the layout ... // HIDe the overlay layout overlayLayout.setVisibility(VIEw.GONE); // Show the overlay layout overlayLayout.setVisibility(VIEw.VISIBLE);}
确定可见性值,对于这种情况,我建议使用VIEw.GONE而不是VIEw.INVISIBLE
阅读更多内容:
> https://developer.android.com/reference/android/view/View.html#GONE
> https://developer.android.com/reference/android/view/View.html#INVISIBLE
> http://tips.androidgig.com/invisible-vs-gone-view-in-android/
以上是内存溢出为你收集整理的C#-Android ProgressBar消失全部内容,希望文章能够帮你解决C#-Android ProgressBar消失所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)