android FrameLayout布局中ViewFlipper管理的子页面中添加添加控件Button、SeekBar等控件,代码动态设置这些控件为不可用setEnabled(false) 代码执行后无效,控件还是可以继续使用,求高手解答。。。在线等。。
如果对activity中的控件 该控件未在ViewFlipper管理的子页面中,如对Button设置 setEnabled(false)后 该代码执行后控件被禁用。
代码如下
public void onLock(View v){
if (v.getId() == R.id.BntLock){
bIsLocked = !bIsLocked;
}
View view = LayoutInflater.from(this).inflate(R.layout.tab3, null);
if (bIsLocked){
((ImageView)findViewById(R.id.lock)).setImageDrawable(getResources().getDrawable(R.drawable.icon_lock_small));//这个是Activity上的ImageView 对这个控件进行设置后,直接结果OK
((Button)findViewById(R.id.BntLock)).setBackground(getResources().getDrawable(R.drawable.icon_lock_big));//这个是Activity上的Button 对这个控件进行设置后,直接结果OK
//以下5个Button是在子页面上的控件,设置后代码执行后 Button还是继续能用
((Button)view.findViewById(R.id.BntTab3Fun01)).setEnabled(false);
((Button)view.findViewById(R.id.BntTab3Fun01)).setEnabled(false);
((Button)view.findViewById(R.id.BntTab3Fun02)).setEnabled(false);
((Button)view.findViewById(R.id.BntTab3Fun03)).setEnabled(false);
((Button)view.findViewById(R.id.BntTab3Fun04)).setEnabled(false);
((Button)view.findViewById(R.id.BntTab3Fun05)).setEnabled(false);
}else {
((ImageView)findViewById(R.id.lock)).setImageDrawable(getResources().getDrawable(R.drawable.icon_unlock_small));//同上
((Button)findViewById(R.id.BntLock)).setBackground(getResources().getDrawable(R.drawable.icon_unlock_big));//同上
((Button)view.findViewById(R.id.BntTab3Fun01)).setEnabled(true);
((Button)view.findViewById(R.id.BntTab3Fun02)).setEnabled(true);
((Button)view.findViewById(R.id.BntTab3Fun03)).setEnabled(true);
((Button)view.findViewById(R.id.BntTab3Fun04)).setEnabled(true);
((Button)view.findViewById(R.id.BntTab3Fun05)).setEnabled(true);
}
}
大概试了一下,有效,也使用的FrameLayout,我看你这个lock方法,view是重新inflate的,如果是你已经添加过,这个方法中的View没有重新添加,自然没有效果,不知道这个方法调用的场景是如何的,再仔细看看。不知道能不能帮上你的忙,你比较一下有什么不一样的吧
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mActivity = this;
viewFlipper = (ViewFlipper) findViewById(R.id.viewflipper);
gestureDetector = new GestureDetector(this);
for (int i = 0; i < 10; i++) {
View view = LayoutInflater.from(this).inflate(R.layout.item, null);
Button btnButton = (Button) view.findViewById(R.id.btn);
btnButton.setText("第" + i + "个");
btnButton.setEnabled(false);
btnButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(ViewFlipperActivity.this, "Enable=true",
Toast.LENGTH_SHORT).show();
}
});
viewFlipper.addView(view, new LayoutParams(
LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
}
}