【问题标题】:How do I display a image button in front of an image in Android?如何在 Android 中的图像前显示图像按钮?
【发布时间】:2023-03-16 12:13:01
【问题描述】:

我真的是编程新手,我在制作游戏时遇到了一个问题,所有的边框和背景都是图像,我一直在尝试找到一个显示图像按钮的方法,这样我就可以做一个设置菜单,但我不知道下一步该怎么做,请帮忙。这就是我完成按钮的方式

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        ImageButton myButton = new ImageButton(this);
        myButton.setImageResource(R.drawable.settings);
        myButton.setId(1);
        RelativeLayout myLayout = new RelativeLayout(this);
        RelativeLayout.LayoutParams buttonParams =
                new RelativeLayout.LayoutParams(
                        RelativeLayout.LayoutParams.WRAP_CONTENT,
                        RelativeLayout.LayoutParams.WRAP_CONTENT);
        myLayout.addView(myButton, buttonParams);
        setContentView(myLayout);

        myButton.setOnClickListener(
                new View.OnClickListener() {
                    public void onClick(View v) {
                        onButtonClick(v);
                    }
                });


    }

    public void onButtonClick(View v) {
        //do something when button is clicked.

        PopupMenu popup = new PopupMenu(this, v);
        MenuInflater inflater = popup.getMenuInflater();
        inflater.inflate(R.menu.contextitems, popup.getMenu());
        popup.show();

    }

这就是我显示图像的方式

 @Override
    public void draw(Canvas canvas) {


        final float scaleFactorX = getWidth() / (WIDTH * 1.f);
        final float scaleFactorY = getHeight() / (HEIGHT * 1.f);

        if (canvas != null) {


            final int savedState = canvas.save();
            canvas.scale(scaleFactorX, scaleFactorY);

            bg.draw(canvas);
            if (!dissapear) {
                player.draw(canvas);
            }
            //draw smokepuffs
            for (Smokepuff sp : smoke) {
                sp.draw(canvas);
            }
            //draw missiles
            for (Missile m : missiles) {
                m.draw(canvas);
            }


            //draw topborder
            for (TopBorder tb : topborder) {
                tb.draw(canvas);
            }

            //draw botborder
            for (BotBorder bb : botborder) {
                bb.draw(canvas);
            }
            //draw explosion
            if (started) {
                explosion.draw(canvas);
            }


            drawText(canvas);
            canvas.restoreToCount(savedState);

        }


    }

【问题讨论】:

  • 您以编程方式生成 ImageButton 是否有原因?为什么不能通过 XML 添加呢?
  • 我正在学习一个教程,他就是这样做的,但他并没有真正说明原因
  • 您能否将activity_main 布局XML 添加到您的问题中?
  • 主要的编程,都是在一个单独的类中完成的,主要活动和 activite_main 布局 XML 不做任何事情
  • 相反,它确实在setContentView(R.layout.activity_main); 行做了一些事情。如果你想要一些东西来“覆盖”你的主要内容视图,我想我们需要看到它。

标签: java android


【解决方案1】:

您必须使用图层列表(可绘制)。

<bitmap 
      android:src="@drawable/your_photo"
      android:gravity="center" />

【讨论】:

  • 你试过这个yourButton.setBackgroundResource(R.drawable.new_image);
猜你喜欢
  • 2014-05-07
  • 2023-03-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-16
相关资源
最近更新 更多