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

How to set OnClickListener for view that is not in the main_activity.xml?

如标题所述,我尝试为另一个 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 文件中。需要帮助

通过将另一个 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();
    }
});

根据提供的内容,您似乎没有将视图添加到 parent 布局。

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

yourParentView.addView(view);

虽然这可能不会产生预期的效果,因为这很可能(假设您没有玩过 parent 的引力)将视图放在左上角。

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

例如 RelativeLayout.LayoutParams 或 LinearLayout.LayoutParams

一旦您选择并创建了布局参数,您就可以使用它

yourParentView.addView(view, createdLayoutParams);