Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/222.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 创建可在多个活动之间共享的布局代码_Android_Android Layout_Popover_Code Reuse - Fatal编程技术网

Android 创建可在多个活动之间共享的布局代码

Android 创建可在多个活动之间共享的布局代码,android,android-layout,popover,code-reuse,Android,Android Layout,Popover,Code Reuse,这是用于确认的弹出窗口的屏幕截图。我以多种方式使用这种类型的弹出窗口,因此创建了关闭按钮X。我在所有弹出窗口的布局中都包含close按钮xml,但我希望它能被重用(共享) 我不知道如何在android中通过编程创建按钮,这样我就可以保存到一个公共文件并用于所有活动。例如,我可以创建closeButton.java,然后在任何布局上包含close按钮,并在其上有一个公共单击侦听器。Android视图,即使是xml文件中提到的视图,也只是java类。您可以创建一个CloseButton.java类,

这是用于确认的弹出窗口的屏幕截图。我以多种方式使用这种类型的弹出窗口,因此创建了关闭按钮
X
。我在所有弹出窗口的布局中都包含close按钮xml,但我希望它能被重用(共享)


我不知道如何在android中通过编程创建按钮,这样我就可以保存到一个公共文件并用于所有活动。例如,我可以创建closeButton.java,然后在任何布局上包含close按钮,并在其上有一个公共单击侦听器。

Android
视图
,即使是xml文件中提到的视图,也只是java类。您可以创建一个
CloseButton.java
类,该类
扩展按钮
,将逻辑放入其中,然后在所有xml布局中使用该类,就像任何其他
视图

<com.example.project.by.nicky.CloseButton
    android:id="@+id/someId"
    android:layout_width=""
    android:layout_height="" />

解决这个问题的一个方法是创建一个服装视图,扩展android按钮或图像,这将是您的X按钮

而不是从视图的构造函数中注册click事件

class XButton extends ImageView{

    public XButton(Context context) {
        super(context);
        init();
    }

    public XButton(Context context, AttributeSet attrs) {
        super(context, attrs);
        init();
    }

    public XButton(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        init();
    }

    private void init(){
        setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                // do some thing
            }
        });
    }
}
MyPopUpWindow类

import android.content.Context;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.PopupWindow;

public class MyPopUpWindow extends PopupWindow {


private Button mCrossBtn;
private Button mConfirmationBtn;
private ConfirmationListener mConfirmationListener;

public MyPopUpWindow(Context ctx){
    super(ctx);
}
@Override
public void setContentView(View contentView) {
    super.setContentView(contentView);

    mCrossBtn = contentView.findViewById(R.id.cross_button_id);
    mCrossBtn.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View arg0) {
            MyPopUpWindow.this.dismiss();
        }
    });

    mConfirmationBtn = contentView.findViewById(R.id.confirm_button_id);
    mConfirmationBtn.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View arg0) {
            if(mConfirmationListener != null){
                mConfirmationListener.onConfirm();
            }
        }
    });
}


interface ConfirmationListener{
    public void onConfirm();
}

public void setConfirmationListener(ConfirmationListener l) {
    mConfirmationListener = l;
}
}
import android.content.Context;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.PopupWindow;

public class MyPopUpWindow extends PopupWindow {


private Button mCrossBtn;
private Button mConfirmationBtn;
private ConfirmationListener mConfirmationListener;

public MyPopUpWindow(Context ctx){
    super(ctx);
}
@Override
public void setContentView(View contentView) {
    super.setContentView(contentView);

    mCrossBtn = contentView.findViewById(R.id.cross_button_id);
    mCrossBtn.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View arg0) {
            MyPopUpWindow.this.dismiss();
        }
    });

    mConfirmationBtn = contentView.findViewById(R.id.confirm_button_id);
    mConfirmationBtn.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View arg0) {
            if(mConfirmationListener != null){
                mConfirmationListener.onConfirm();
            }
        }
    });
}


interface ConfirmationListener{
    public void onConfirm();
}

public void setConfirmationListener(ConfirmationListener l) {
    mConfirmationListener = l;
}
}