这是用于确认的弹出窗口的屏幕截图。我在很多方面使用这种类型的弹出窗口,因此创建了关闭按钮X
。我在所有弹出窗口的布局中都包含了关闭按钮xml,但我希望它可以重复使用(共享)。
我不知道如何在android中以编程方式创建按钮,因此我可以保存到一个公共文件并用于所有活动。例如,我可以创建closeButton.java,然后在任意布局上包含关闭按钮,其上有一个常见的点击监听器。
答案 0 :(得分:1)
Android Views
,即使是xml文件中提到的那些,也只是Java类。您可以创建CloseButton.java
类extends Button
,将逻辑放在那里,然后在所有xml布局中使用此类,就像任何其他View
一样:
<com.example.project.by.nicky.CloseButton
android:id="@+id/someId"
android:layout_width=""
android:layout_height="" />
答案 1 :(得分:1)
解决这个问题的一种方法是创建一个扩展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
}
});
}
}
答案 2 :(得分:0)
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// use MyPopUpWindow as below no need to create layout in each activity
MyPopUpWindow popup = new MyPopUpWindow(this);
popup.setContentView(your_layout);
popup.setConfirmationListener(new ConfirmationListener() {
@Override
public void onConfirm() {
// TODO Auto-generated method stub
}
});
}
}
MyPopUpWindow Class
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;
}
}