Android Can';t单击弹出窗口中按钮上的按钮
当我显示一个包含按钮的弹出窗口时,我不能点击他。执行onclick,但不更改图形 它显示PopupWindow:Android Can';t单击弹出窗口中按钮上的按钮,android,button,click,popupwindow,Android,Button,Click,Popupwindow,当我显示一个包含按钮的弹出窗口时,我不能点击他。执行onclick,但不更改图形 它显示PopupWindow: public void btn_friendsgame_newClick(View v) { LayoutInflater layoutInflater = (LayoutInflater)getBaseContext().getSystemService(LAYOUT_INFLATER_SERVICE); View popupView
public void btn_friendsgame_newClick(View v) {
LayoutInflater layoutInflater =
(LayoutInflater)getBaseContext().getSystemService(LAYOUT_INFLATER_SERVICE);
View popupView = layoutInflater.inflate(R.layout.custom_dialog, null);
RelativeLayout content = (RelativeLayout) popupView.findViewById(R.id.layout_content);
Button b = new Button(this); // THIS BUTTON CAN'T CLICK!
b.setText("Test");
b.setLayoutParams(new LayoutParams(
ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.WRAP_CONTENT));
content.addView(b);
final PopupWindow popupWindow = new PopupWindow(popupView,
LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
popupWindow.showAtLocation(this.findViewById(R.id.main), Gravity.CENTER, 0, 0);
Button close = (Button) popupView.findViewById(R.id.btn_popup_settings);
close.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
popupWindow.dismiss();
}
});
自定义_dialog.xml:
如何修复此问题?您没有像使用
close
按钮那样将他附加到onClickListener
。我不知道你想要b
做什么,所以我不能给你任何代码,但你显然知道如何将onClick
事件附加到按钮,因为你已经有了close
。对b
执行同样的操作,并在onClick()
中放入所需的逻辑,您应该能够单击他
public void btn_friendsgame_newClick(View v) {
LayoutInflater layoutInflater =
(LayoutInflater)getBaseContext().getSystemService(LAYOUT_INFLATER_SERVICE);
View popupView = layoutInflater.inflate(R.layout.custom_dialog, null);
RelativeLayout content = (RelativeLayout) popupView.findViewById(R.id.layout_content);
Button b = new Button(this); // THIS BUTTON CAN'T CLICK!
b.setText("Test");
b.setLayoutParams(new LayoutParams(
ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.WRAP_CONTENT));
content.addView(b);
// here set onClick
b.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// put logic in here to do whatever you want
}
final PopupWindow popupWindow = new PopupWindow(popupView,
LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
popupWindow.showAtLocation(this.findViewById(R.id.main), Gravity.CENTER, 0, 0);
Button close = (Button) popupView.findViewById(R.id.btn_popup_settings);
close.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
popupWindow.dismiss();
}
});
您没有像使用
close
按钮那样将他附加到onClickListener
。我不知道你想要b
做什么,所以我不能给你任何代码,但你显然知道如何将onClick
事件附加到按钮,因为你已经有了close
。对b
执行同样的操作,并在onClick()
中放入所需的逻辑,您应该能够单击他
public void btn_friendsgame_newClick(View v) {
LayoutInflater layoutInflater =
(LayoutInflater)getBaseContext().getSystemService(LAYOUT_INFLATER_SERVICE);
View popupView = layoutInflater.inflate(R.layout.custom_dialog, null);
RelativeLayout content = (RelativeLayout) popupView.findViewById(R.id.layout_content);
Button b = new Button(this); // THIS BUTTON CAN'T CLICK!
b.setText("Test");
b.setLayoutParams(new LayoutParams(
ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.WRAP_CONTENT));
content.addView(b);
// here set onClick
b.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// put logic in here to do whatever you want
}
final PopupWindow popupWindow = new PopupWindow(popupView,
LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
popupWindow.showAtLocation(this.findViewById(R.id.main), Gravity.CENTER, 0, 0);
Button close = (Button) popupView.findViewById(R.id.btn_popup_settings);
close.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
popupWindow.dismiss();
}
});
这是一个
警报对话框吗?或者什么样的弹出窗口?为什么不使用警报对话框生成器,它最多包含三个可以编码的按钮。这是一个AlertDialog
对话框吗?或者什么样的弹出窗口?为什么不使用警报对话框生成器,它最多包含三个可以编码的按钮。不,不。从XML加载的按钮关闭效果很好。它有自定义图形。但通过编程创建的按钮b不能点击——当我点击它时,它的图形不会改变。一般来说,按钮b是测试用的,我知道。这就是我的答案。您没有为它设置onClick()
,这就是为什么您可以单击close
,但不能单击b
。您需要为b
分配一个onClick()
,以便它知道如何侦听单击事件,并知道单击事件时要做什么。在b
No,No的onClick()。它有自定义图形。但通过编程创建的按钮b不能点击——当我点击它时,它的图形不会改变。一般来说,按钮b是测试用的,我知道。这就是我的答案。您没有为它设置onClick()
,这就是为什么您可以单击close
,但不能单击b
。您需要为b
分配一个onClick()
,以便它知道如何侦听单击事件,并知道单击事件时要做什么。在b的onClick()