mfcpple 2013-12-09 22:03 采纳率: 100%
浏览 3245
已采纳

android ViewFlipper管理的子页面中Button设置setEnabled(false)后执行无效,在线急等

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);
        }
    }

展开全部

  • 写回答

1条回答 默认 最新

  • Jerome_Song 2013-12-10 01:02
    关注

    大概试了一下,有效,也使用的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));
        }
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
编辑
预览

报告相同问题?

悬赏问题

  • ¥15 有人帮看看这个问题的嘛
  • ¥15 STM32悬赏求解答,ai不要来解答
  • ¥15 Mysql 一张表同时多人查询和插入怎么防止死锁
  • ¥20 centos6.7 安装libevent库.总是报错,如何解决?
  • ¥15 电脑买回,学校的有线网络总掉。
  • ¥20 关于普洛菲斯触摸屏与AB连接地址问题
  • ¥15 syri可视化不显示插入缺失
  • ¥30 运行软件卡死查看系统日志分析不出来
  • ¥15 C语言代码改正特征选择算法设计,贝叶斯决策,,设计分类器,远程操作代码修正一下
  • ¥15 String 类valuve指向的问题
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部