如何为不在main_activity.xml中的视图设置OnClickListener?

时间:2017-01-02 23:22:37

标签: java android xml onclicklistener imagebutton

就像标题所说,我试图为另一个XML文件中的视图设置OnClickListener。我尝试了以下代码,虽然我没有得到任何异常,但它无效。

 LayoutInflater layoutInflater = getLayoutInflater();
    View view = layoutInflater.inflate(R.layout.single_row,null,false);
    mImageButton = (ImageButton)view.findViewById(R.id.shareImageButton);
    mImageButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Snackbar.make(v, "working on it", Snackbar.LENGTH_LONG)
                    .setAction("Action", null).show();
        }
    });

我的ImageButton位于另一个XML文件中。 NEEEEEED HELP

2 个答案:

答案 0 :(得分:0)

使用另一个single_row.xml,将其包含在main_activity.xml文件中。

粘贴main_activity.xml文件中的代码:

<include layout:"@layout/single_row.xml" />

现在,您可以像使用main_activity.xml中的其他视图一样正常使用ImageButton。在MainActivity.class的onCreate()方法中添加以下代码。

ImageButton mImageButton = (ImageButton)findViewById(R.id.shareImageButton);
mImageButton.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Snackbar.make(v, "working on it", Snackbar.LENGTH_LONG)
                .setAction("Action", null).show();
    }
});

答案 1 :(得分:0)

根据提供的内容,您似乎没有将视图添加到父版面。

假设父布局已经膨胀,你只需添加视图,就像这样

yourParentView.addView(view);

这可能不会产生预期的影响,因为这很可能(假设您没有使用父母的重力)将视图放在左上角。

您需要通过LayoutParams将视图放在所需的位置。

示例是RelativeLayout.LayoutParams或LinearLayout.LayoutParams

一旦您选择并创建了layoutParams,就可以使用它来代替

yourParentView.addView(view, createdLayoutParams);