【发布时间】: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?可能你明白为什么不工作了