【问题标题】:Button not calling OnClickListener按钮未调用 OnClickListener
【发布时间】:2015-02-20 15:21:10
【问题描述】:

我刚刚创建了一个ScrollView,里面有一个LinearLayout。这个LinearLayout顶部有一个按钮,我无能为力。按钮的 onClickListener 永远不会被调用。

我想检测用户何时按下LinearLayout 以及何时按下按钮。

这是我的代码:

    LinearLayout layout = new LinearLayout(this);
    layout.setOrientation(LinearLayout.VERTICAL);
    scrollView.addView(layout);
    layout.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            layoutClick(v);
        }
    });

    LinearLayout.LayoutParams headerParam = new LinearLayout.LayoutParams(
            LinearLayout.LayoutParams.MATCH_PARENT,getDpFromPixel(50));

    //bottone per l'header
    Button headerButton = new Button(this);
    headerButton.setId(findId());
    headerButton.setLayoutParams(headerParam);
    //headerButton.setBackground(getResources().getColor(R.color.button_backgroud));
    //headerButton.setBackground(getResources().getColor(R.color.button_backgroud));
    Drawable d = getResources().getDrawable(R.color.button_backgroud);
    headerButton.setBackground(d);
    headerButton.setText(title);
    headerButton.setTextColor(getResources().getColor(R.color.white));
    headerButton.setGravity(Gravity.CENTER_VERTICAL);
    headerButton.setPadding(70, 0, 0, 0);
    headerButton.setTextAlignment(View.TEXT_ALIGNMENT_TEXT_START);
    headerButton.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            buttonPressed(v);
            System.out.println("button pressed!!");
        }
    });
    layout.addView(headerButton);

“layoutClick”函数正在工作,headerButton 永远不会调用“buttonPressed”函数或打印到控制台..

【问题讨论】:

  • 不需要,XML是空的(只有父LinearLayout),一切都是代码创建的。
  • 好的,你在哪里添加headerButton
  • 您是否尝试过使用.setClickable(); 方法?
  • @Elltz 我只是在粘贴代码后的一行添加了布局,我编辑了问题。
  • 看下面的帖子Does making parent click-able make all child element clickable as well?可能你明白为什么不工作了

标签: android button


【解决方案1】:

尝试让按钮成为焦点

headerButton.setFocusable(true);
headerButton.setClickable(true);

【讨论】:

  • 按钮不请求焦点,它只触发 onclick 事件,所以为什么要添加或需要它。
  • 我试过了,没有任何改变。为什么我需要指定按钮的可点击属性?默认为假?
猜你喜欢
  • 1970-01-01
  • 2018-07-04
  • 1970-01-01
  • 1970-01-01
  • 2011-10-02
  • 1970-01-01
  • 1970-01-01
  • 2013-06-24
相关资源
最近更新 更多