隐藏系统布局的ProgressDialog中的button

ProgressDialog pd;
	
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		pd = new ProgressDialog(this,ProgressDialog.THEME_HOLO_LIGHT);
		
	}


public void showWaitDialog(String msg,
			android.content.DialogInterface.OnClickListener lis) {
		
		tempLis = lis;
		if (lis != null) {
			pd.setButton(DialogInterface.BUTTON_NEGATIVE, "取消", mCancelLis);
		}
		pd.setMessage(msg);
		pd.setCancelable(true);
		pd.show();
		
	}

	public void showWaitDialog(String msg) {
		if(pd.getButton(DialogInterface.BUTTON_NEGATIVE) !=null){
//			pd.getButton(DialogInterface.BUTTON_NEGATIVE).setVisibility(View.GONE); //异常效果
			ViewParent parent =  pd.getButton(DialogInterface.BUTTON_NEGATIVE)
					.getParent().getParent();
			LinearLayout layout = (LinearLayout) parent;
			layout.setVisibility(View.GONE);
		}
		showWaitDialog(msg, null);
	}


public void showDialog(View v){
		switch (v.getId()) {
		case R.id.button1:
			showWaitDialog("正在加载。。。");
			
			
			break;
			
		case R.id.button2:
			showWaitDialog("出现异常,请重新加载", "确定", new OnClickListener() {
				
				@Override
				public void onClick(DialogInterface dialog, int which) {
					cancleWaitDialog();
					
				}
			});
			
			break;

		default:
			break;
		}
	}






正常效果: 

需要按钮的时候就pb.setButton()增加一个,不需要按钮只需要显示信息的时候就把按钮隐藏。



异常效果:  

                                        

 pd.getButton(DialogInterface.BUTTON_NEGATIVE).setVisibility(View.GONE);
当我这样隐藏那个确认按钮,然后再次只显示信息,发现按钮那里并没有消失只是变成了空白,很明显button外面应该嵌套了一层或几层布局。


知道原因了,现在只需要确认button的第几层父布局和显示信息的父布局是同级的。

在eclipse中打开Open Perspective-------------->>Hierarchy View



然后连接手机后,打开异常效果界面,现在我们就看到这个ProgressDialog的布局树

然后发现下面id/button2 就是确认按钮,button上面还有两层LinearLayout,第二层和显示信息的是同级的,所以把第二层LinearLayout隐藏就行了,代码如下:

ViewParent parent =  pd.getButton(DialogInterface.BUTTON_NEGATIVE)
					.getParent().getParent();
			LinearLayout layout = (LinearLayout) parent;
			layout.setVisibility(View.GONE);


注意:ProgressDialog 我只new了一次,所以要隐藏按钮实现效果,如果你每次显示都new,取消的时候都把pd = null;,就没有上述的异常效果了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值